• 1035
  • 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
495

Загрузка...

Комментарии

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

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

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

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

Я был удивлён, что в Азербайджане есть Казахский район

Я был удивлён, что в Азербайджане есть Казахский район

Мне как казаху по национальности очень хотелось туда попасть. Оказалось, что климат там намного суровей и люди, говорят, суровые и воинственные. Казах – город на западе Азербайджана...
alidimash
18 янв. 2017 / 21:50
  • 28008
  • 18
10 лучших районов Алматы. Широкие улочки, частные дома, летом – красота!

10 лучших районов Алматы. Широкие улочки, частные дома, летом – красота!

Названия улиц: Садовый бульвар, Солнечный проезд. Красиво звучит не так ли? Прям, как в Москве... Уютные улочки и радующие глаз одноэтажные домики, тихо и свободно, нет динамики, движух и ажиотажа.
gelberdeuet
16 янв. 2017 / 14:45
  • 8149
  • 98
Многочасовые очереди, смерти в ЦОНах: почему вопросы об этом ставят парламентариев в тупик?

Многочасовые очереди, смерти в ЦОНах: почему вопросы об этом ставят парламентариев в тупик?

Ожидали ли депутаты Мажилиса всего этого? Как планировали этот процесс регистрации, и обсуждали ли его, прежде чем одним нажатием кнопки принять нормы с такими абсурдными временными рамками?
openqazaqstan
17 янв. 2017 / 14:32
  • 4902
  • 22
Астана глазами алматинских девушек. Как при таких погодных условиях можно выжить?

Астана глазами алматинских девушек. Как при таких погодных условиях можно выжить?

В спальных районах, и в высотных домах сквозь стены слышно завывание ветра. В особенности ночью. Такие звуки, я слышала, пожалуй, только по телевизору, в фильмах про метель.
Naomi_K
вчера / 12:36
Сильное ДТП произошло в Алматы на Тимирязева-Байзакова

Сильное ДТП произошло в Алматы на Тимирязева-Байзакова

NoComment (c) Официальный слоган EuroNews. Катастрофа на алматинской утренней трассе началась с того, что водители «Ниссана» и микровена ожидали сигнала светофора на запад по Тимирязева...
ibestreporter
17 янв. 2017 / 22:52
  • 3737
  • 5
Вейпинг безопасен? Эндрю Холл из США тоже так считал, пока что-то не пошло не так

Вейпинг безопасен? Эндрю Холл из США тоже так считал, пока что-то не пошло не так

Эндрю Холл из США считал, что вейпинг безопасен и усиленно убеждал в этом близких. Но как-то раз что-то пошло не так. Это результат взрыва хипстерского устройства - выбило 7 зубов + ожоги и раны...
Maxambet
17 янв. 2017 / 16:28
  • 3664
  • 50
Это поколение просрет страну. 20-летняя молодежь представляет из себя сказочных эльфов

Это поколение просрет страну. 20-летняя молодежь представляет из себя сказочных эльфов

Смотря в очередные пустые глаза вчерашнего студента, приходящего устраиваться на первую работу страшно становится. Потому что сравниваю с теми же китайскими студентами, которые готовы выгрызать себе мечту.
mbaitykov
18 янв. 2017 / 11:34
Становится хуже, но как-то постепенно. Беднеем, но тоже как-то не разом

Становится хуже, но как-то постепенно. Беднеем, но тоже как-то не разом

Помню, когда я уезжал и Казахстана, тут было довольно прилично, даже не смотря на то, что жить было невыносимо. Но прилично так. Мусора было меньше. Дороги чистили, вони почти не было. Да и в остальном тоже норм.
shootnix
18 янв. 2017 / 12:49
  • 3272
  • 34
Любимый Тайланд. Правящий король называет Паттайю «черным пятном на репутации страны»

Любимый Тайланд. Правящий король называет Паттайю «черным пятном на репутации страны»

Тайланд мы впервые посетили в декабре 2012 года. Полученные эмоции настолько были яркими, что в конце 2015 года мы решили еще разок слетать в Тайланд. Вспоминая Тай, первое о чем я думаю - горячий...
zhainar_d
17 янв. 2017 / 11:11
  • 3093
  • 24