• 1040
  • 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
499

Loading...

Комментарии

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

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

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

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

Известные казахи, женившиеся на русских женщинах

Известные казахи, женившиеся на русских женщинах

Говорят, что за каждым великим мужчиной стоит женщина. А еще говорят что, все великие люди меняют судьбу своего народа. Так давайте узнаем больше о русских женщинах, навсегда изменивших жизнь...
Shala-Kazakh
17 февр. 2017 / 23:21
  • 36121
  • 81
Архивные фотографии Алма-Аты из семейного альбома. Ностальгический пост

Архивные фотографии Алма-Аты из семейного альбома. Ностальгический пост

Насобирал разных фотографий про наш город, из семейного архива. Фотографии не от сканированные, а пересняты на телефон. Давно хотел выставить, но не решался) Сейчас уже мы все поменялись, уже...
Ispanec
22 февр. 2017 / 11:05
  • 10880
  • 23
Вспомнились слова однокурсника: «Не завидую твоему будущему мужу»

Вспомнились слова однокурсника: «Не завидую твоему будущему мужу»

Среди моих знакомых есть одна милая девушка, она тоже молодая мама как и я. Очень открытая, видная, недавно вышла на работу. У нее счастливая семья и все, тьфу-тьфу, складывается хорошо.
Roza_pvl
19 февр. 2017 / 11:49
  • 5568
  • 43
«Ау, дорогой, проснись! 21 век на дворе давно!». Бездипломный-безработный-бесквартирный!

«Ау, дорогой, проснись! 21 век на дворе давно!». Бездипломный-безработный-бесквартирный!

Ну реально же, парни, откуда вы только беретесь такие простые, а? Я сейчас просто расскажу несколько историй из личного опыта, и судите сами – нормально это? Но для начала расскажу немного о себе...
socium_kzo
22 февр. 2017 / 11:38
  • 5424
  • 89
Утверждён график выходных дней для жителей Казахстана в марте

Утверждён график выходных дней для жителей Казахстана в марте

Казахстанцы отдохнут около полумесяца в грядущем марте. В связи с праздниками в марте ожидается четыре дополнительных выходных дня. Первый, разумеется, выпадает на главный женский день в году, а...
Seattle
17 февр. 2017 / 13:20
  • 4716
  • 4
Диана Шурыгина – жертва или змея? Девочка красивая, а весь мир судит её именно за это

Диана Шурыгина – жертва или змея? Девочка красивая, а весь мир судит её именно за это

Я совсем не смотрю передачу "Пусть говорят", слишком много ругани и негатива, но новость про какую-то девушку заполонила все мои социальные сети, я открыла youtube и посмотрела несколько передач...
Roza_pvl
22 февр. 2017 / 11:49
  • 3861
  • 32
Как купить свое жилье при зарплате в 100 тысяч тенге

Как купить свое жилье при зарплате в 100 тысяч тенге

Итак, по просьбам трудящихся и по крикам души коллективного бессознательного решила я написать пост на эту тему. Вводные данные: 1) нет имущества, которое можно продать для покупки собственного...
DanaJarlygapova
20 февр. 2017 / 16:17
  • 3863
  • 46
50 бизнес-встреч с лучшими предпринимателями Астаны. «Наш бизнес начинался как хобби»

50 бизнес-встреч с лучшими предпринимателями Астаны. «Наш бизнес начинался как хобби»

Друзья, представляю вашему вниманию второго героя моей рубрики "50 бизнес-встреч с лучшими (по моей версии) предпринимателей Астаны за 100 дней" - Асхата Солтанова!
Kultursyn
20 февр. 2017 / 12:46
  • 3705
  • 18
Я не националист, но выйду замуж только за казаха. 22 факта обо мне

Я не националист, но выйду замуж только за казаха. 22 факта обо мне

Всем доброго времени суток! Поскольку сейчас долгожданные выходные, я болею и имею полное право ничего не делать за чашечкой горячего чая, то решила все-таки написать этакий скромный пост о себе...
Sserikyzy
18 февр. 2017 / 16:35