• 1104
  • 7
  • 1
Нравится блог?
Подписывайтесь!

Структура JS

Javascript - язык программирования. Значит в нем есть чем манипулировать( функции ) и есть над чем манипулировать ( значения ). Но прежде чем говорить о том, какими могут быть значения, давайте решим, где нам следует использовать слово var.

var - это определение переменной. Например, var c. Или var z="6". Но в яваскрипте можно написать и z="6", без ключевого слова var. В чем же разница?

Давайте посмотрим. Сначала напишем функцию p (Зачем нам каждый раз писать document.write? ). Вот она function p(x){document.write(x);}.

Сейчас проверяем, чем отличается var от пустоты. Проверьте var z="Я z";x="А я нет";p(z);p(x); Как видно, обе переменные напечатаны. Так зачем же писать var? Лишний расход траффика!!!

Попробуем написать так:

Краткий листинг:

function p(x){document.write(x);}
пробуем_вар = "Я снаружи!";
function test_var(){пробуем_вар ="А я внутри"; p(пробуем_вар);}
test_var();p(пробуем_вар);

Очевидно, что внутри функции мы не определили локальную переменную, а изменили значение старой доброй "Я снаружи."=( Надеюсь, примерно понятно, о чем я.

Кстати, пора подумать о определении функций, пока вы их не знаете. Можно написать так:

    fun1 = function(){p("Я первая");}
window.fun2 = function(){p("Я вторая");}
function fun3(){p("Я третья")

Все три функции работают, напишите fun1(), fun2(), fun3(); Все три покажут то, что надо!

Хотя правильно, тут тоже есть подвох

function test_fun(){
fun1();
fun2();
fun3();
fun1 = function(){p("Я первая");}
window.fun2 = function(){p("Я вторая");}
function fun3(){p("Я третья")}
}
test_fun();

Если вы запустите, то у вас вылетит ошибка( или пустой экран ). Закомментируйте вызов первой и второй функции. Вот так:

function test_fun(){
//fun1();
//fun2();
fun3();
fun1 = function(){p("Я первая");}
window.fun2 = function(){p("Я вторая");}
function fun3(){p("Я третья");}
}
test_fun();

Заработает! Можете перенести вторую и первую функции вниз test_fun. Они не виноваты в том, что вызывали ошибки, с ними все норм.

function test_fun(){

fun3();
fun1 = function(){p("Я первая");}
window.fun2 = function(){p("Я вторая");}
function fun3(){p("Я третья");}
fun1();// Все норм
fun2();// И с ней тоже=)
}
test_fun();

Почему это происходит? Напишите

p(не_определена);не_определена="я определена теперь"

Примерно потому же не работали fun1 и fun2=)

Определять функции и переменные вы уже можете, поэтому перейдем к функциям и переменным.

Хотя, постойте, какие именно мы можем определять переменные и функции? Я имею в виду имена. Имена должны быть составлены из Unicode символов(а именно из букв, цифр, символов $ (о jquery!!) и _). Но имена переменных не могут начинаться с цифр. (Помните объекты? car.wheel, object.prop? А как пишутся цифры? 3.14. А теперь попробуйте отличить обьект 3.14 от числа 3.14. Поэтому и нельзя с цифр начинать переменные. А заканчивать можно. var1, var2). Кстати, кроме переменных, функций и их значений у нас есть ; Где и когда его ставить?

Ставить его желательно всегда, а в таких случаях просто необходимо помнить, что js сам ставит их перед новой строкой!:

var bool = function(){
return true
}
if(bool()){p("a")}else{p("b")}//все норм, пишет a
var bool = function(){
return //а тут заботливо поставлена запятая
true
}
if(bool()){p("a")}else{p("b")}
var bool = function(){
return
true
}
if(bool){p("a")}else{p("b")}//а, кстати сама функция,
//а не результат выполнения, всегда true (обратите внимание, что bool без скобочек)

Хорошо, теперь определимся, какие значения могут принимать переменные в js.

1 Числа.

Числа могут быть десятичные 13, могут быть шестнадцатеричные 0x666(равно 1638 в десятеричной), иногда бывают восьмеричные 010 равно 8  в десятичной.

Конечно же, бывают числа с плавающей точкой [цифры][.цифры][(E|e)[(+|-)]цифры]

Например 1.123e-1, или 0.1; 314e-2 тоже(Если бы мы писали все числа 314e-2, то подозреваю, были бы объекты 3.12сотых =))

Про максимальные и минимальные значения говорить не буду. Скажу лишь про NaN (Not a Number ). Вы всегда можете его получить так: Number("a") Смысл, думаю понятен.

2 Строки

Строки это "Привет", 'Пока', 'Строки это "Привет", "Пока"', "Строки это 'Привет', 'Пока'"+'Строки это "Привет", "Пока"'. Разобрались? Тогда понятно, что такое строки.

Осталось только сказать, что строки и числа хорошо уживаются. "3"+"кота", 3+"кота".(Помните, что пробел надо самому вставлять, дабы получить 3 кота, а не 3кота)

"2"+"2", кстати равно 22. а 2+"2*2"? Ой, ой, ой. Напишем лучше 2+parseInt("2"), 2+parseInt("2*2"). Да, parseInt берет только первое число. А если числа нет, или оно стоит после буков, то возвращает NaNa. То есть NaN.

parseFloat пригодится для "3.14".

3 Булевые значения

(2==3) это false. Проверим?

var bool = (3==4)
p(bool)

Где же мы его используем? Да в if!

function p(x){document.write(x);}
var bool = (3==4)
if(bool){p("a")}else{p("b")}// что то знакомое

Да, попробуйте !3 и !!3. Можете повторить с объектами и функциями. Строками не побрезгуйте. Откройте для себя !!!.

4 Массивы

var arr = [1,3]; p(arr [1])//Напишет 3, тк отсчет элементов начинается с 0!

еще можно var arr = new Array(); arr[1]=0;arr[2]=3

И даже так arr=[[1,2],[3.4]]// Пишем arr[0][0]

5 Объекты

obj1 = new Object();
obj1.data="A";
p(obj1.data)
obj2 = {};

obj2.data="A";

p(obj2.data)

Выглядит одинаково. Добвалю еще такой obj3={data:"a"},p(obj3)

ПО ССЫЛКЕ ПРОТИВ ПО ЗНАЧЕНИЮ!!!!

Для начала вспомним, что мы можем делать с переменными:

Мы можем их сравнить( a==b), передать в функцию(func1(a)) и скопировать( a=b).

Что значит по ссылке, а что значит по значению? Примерно это

function inc1(x){x=x+1;p(x);}
function inc2(x){x.data=x.data+1;p(x.data);}
var b={data:3}
inc1(b.data);
p(b.data);
inc2(b);
p(b.data);

На выходе получим 4344. Рассмотрим подробнее.

function inc1(x){x=x+1;p(x);} //Работаем с примитивным числом +)
function inc2(x){x.data=x.data+1;p(x.data);}// Работаем с объектом
var b={data:3}// Наш объект
inc1(b.data);//Берем число
p(b.data);//Выводим число
inc2(b);//Берем объект
p(b.data);//Выводим аттрибут объекта

Очевидно, что когда мы передаем в функцию объект, дальнейшая работа идет над ним. Это может привести вас не туда, куда вы хотели, если вы далее планируете работать с тем же объектом!! Помните это. Кстати, если вы знакомы с указателями в с++, вы поймете преимущество передачи по ссылке, и почему объекты ведут себя именно так. Если не знакомы, то поймете позднее=)

 

 

one_more_kost
7 ноября 2009, 15:50
533

Loading...

Комментарии

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

«До какой же еще степени унижения должен дойти народ?!»

«До какой же еще степени унижения должен дойти народ?!»

Министерство труда и соцзащиты провело через парламент очередной крайне неоднозначный закон, который может вызвать всплеск недовольства в стране.
openqazaqstan
15 нояб. 2017 / 11:17
  • 22764
  • 19
«Почему я не хочу встречаться с мужчинами-казахами»

«Почему я не хочу встречаться с мужчинами-казахами»

Заранее отпишусь, данный пост не является попыткой оскорбить собственную нацию) Как говорится о вкусах не спорят, каждому свое.
Bonittta
16 нояб. 2017 / 14:28
  • 11661
  • 342
Почему катастрофический отток интеллектуальной элиты не тревожит Астану?

Почему катастрофический отток интеллектуальной элиты не тревожит Астану?

Как сообщает телеканал КТК, только за последние девять месяцев Казахстан покинули 28200 человек, из них почти пять тысяч инженеров, около 2700 экономистов и 1700 учителей.
openqazaqstan
вчера / 11:00
  • 5801
  • 39
Задержан казахстанец, продававший детей в сексуальное рабство в ОАЭ и Бахрейн

Задержан казахстанец, продававший детей в сексуальное рабство в ОАЭ и Бахрейн

Подтверждаются худшие предположения, циркулирующие в соцсетях. Периодические исчезновения детей в разных регионах Казахстана объясняются не только семейными проблемами и «синими китами».
openqazaqstan
16 нояб. 2017 / 15:46
  • 5794
  • 54
«Думай как британец»: 8 вещей, которым я научилась в Великобритании

«Думай как британец»: 8 вещей, которым я научилась в Великобритании

Как два года в Великобритании изменили мою жизнь. Несколько простых вещей, которые могли бы сделать нашу жизнь лучше.
goribaldi
13 нояб. 2017 / 16:51
  • 3986
  • 28
Мой личный рейтинг женщин: от пуританки до содержанки

Мой личный рейтинг женщин: от пуританки до содержанки

Сегодня предлагаю вашему вниманию мой личный рейтинг женщин. А вот я хочу быть домохозяйкой, правда, не пахать дома, а хозяйничать.
Mysli_v_Sluh
13 нояб. 2017 / 15:00
Российским женщинам нужны казахстанские мужчины?

Российским женщинам нужны казахстанские мужчины?

Отдельные инициативы некоторых российских чиновников вызывают в Казнете приступы просто-таки гомерического ржача. Женщин в регионе – пруд пруди, а вот мужчин, с которыми они могли бы создать семьи, не хватает.
openqazaqstan
14 нояб. 2017 / 15:55
  • 2520
  • 18
Поездка на заработки в Южную Корею: пройти таможню и не стать персоной нон грата

Поездка на заработки в Южную Корею: пройти таможню и не стать персоной нон грата

Между нашими странами действует безвизовый туристический режим до 30 дней. Но на таможне не "туристов" разворачивают назад с пожизненным запретом во въезд в их страну. Однако пройти паспортный контроль вполне возможно.
Krykbayeva
12 нояб. 2017 / 14:38
  • 2754
  • 46
«Men in black» по-казахски: «сотрудники» плевать хотели на Закон о СМИ

«Men in black» по-казахски: «сотрудники» плевать хотели на Закон о СМИ

Бесцеремонные попытки силовиков помешать работе журналистов демонстрируют, в каком правовом государстве мы живём. Разбить телефон, угрожать, бить – всё это для «сотрудников» в порядке вещей.
openqazaqstan
13 нояб. 2017 / 19:02
  • 2248
  • 33