|
@@ -24,6 +24,8 @@ Javascript-интерпретатор в браузере может работ
|
|
|
|
|
|
```
|
|
|
|
|
|
+
|
|
|
+
|
|
|
## Переменные и типы данных
|
|
|
|
|
|
В отличие от **PHP**, **Perl** и **Shell**-интерпретаторов, с которых это и пошло, в **Javascript** переменные объявляются *без* знака `$`:
|
|
@@ -65,7 +67,7 @@ a = 5;
|
|
|
function b(){
|
|
|
var a = 10;
|
|
|
}
|
|
|
-b()
|
|
|
+b();
|
|
|
alert(a);
|
|
|
```
|
|
|
Код выше аналогичен:
|
|
@@ -83,10 +85,88 @@ echo($a);
|
|
|
```javascript
|
|
|
'use strict';
|
|
|
|
|
|
-var a = 5;
|
|
|
+var a = 5; //без var тут бы была ошибка
|
|
|
function b(){
|
|
|
var a = 10;
|
|
|
}
|
|
|
-b()
|
|
|
+b();
|
|
|
alert(a);
|
|
|
```
|
|
|
+
|
|
|
+**Во избежание ошибок ВСЕГДА определяйте переменные через `var`**.
|
|
|
+
|
|
|
+### Типы данных
|
|
|
+
|
|
|
+Основные типы данных в **JS** совпадают с типами данных **PHP**, за некоторыми исключениями:
|
|
|
+
|
|
|
+- Целые и дробные числа представлены едиными типом `Number`
|
|
|
+- Под "массивом" в **JS** подразумевается массив с целочисленными ключами.
|
|
|
+- Ассоциативные массивы и объекты - это одно и то же;
|
|
|
+- Для переменных без значения и значений отсутствующих ключей в ассоциативных массивах вместо PHP `NULL` используется аналогичный тип `undefined`
|
|
|
+- Так же существует тип `null`, который применяется программистами для задания "пустых" значений и/или в **DOM**.
|
|
|
+
|
|
|
+## `;`
|
|
|
+
|
|
|
+В отличие от **PHP** и многих других языков с **C**-подобным синтаксисом, в **JS** точка с запятой *не является обязательной*, однако нужна
|
|
|
+в некоторых случаях, например при написании операторов в одну строку:
|
|
|
+
|
|
|
+```javascript
|
|
|
+var a = 5
|
|
|
+var b = 6
|
|
|
+var c = "string"
|
|
|
+var d
|
|
|
+
|
|
|
+a ++; b += a; d = c + a;
|
|
|
+```
|
|
|
+
|
|
|
+**Во избежание ошибок просто добавляйте `;` "как обычно", в конце строки**
|
|
|
+
|
|
|
+## Комментарии
|
|
|
+Как в PHP.
|
|
|
+
|
|
|
+## Строки, переменные в них и конкатенация
|
|
|
+
|
|
|
+В отличие от **PHP**, в **JS** нет разницы между одинарными и двойными кавычками:
|
|
|
+
|
|
|
+```javascript
|
|
|
+var a = "\n";
|
|
|
+var b = '\n';
|
|
|
+
|
|
|
+alert(a == b);
|
|
|
+```
|
|
|
+
|
|
|
+```php
|
|
|
+$a = "\n";
|
|
|
+$b = '\n';
|
|
|
+
|
|
|
+echo (a == b);
|
|
|
+```
|
|
|
+
|
|
|
+В отличие от **PHP**, в **JS** нет подстановки переменных в строках в двойных кавычках:
|
|
|
+
|
|
|
+```javascript
|
|
|
+var a = "\n";
|
|
|
+
|
|
|
+alert("Тут нет a переноса a строк");
|
|
|
+```
|
|
|
+
|
|
|
+```php
|
|
|
+$a = "\n";
|
|
|
+
|
|
|
+echo ("Тут есть $a перенос $a строки");
|
|
|
+```
|
|
|
+
|
|
|
+Таким образом, для добавления значения переменной в строку надо использовать **конкатенацию**
|
|
|
+В отличие от **PHP**, в **JS** конкатенация делается с помощью оператора `+`, а не `.`:
|
|
|
+
|
|
|
+```javascript
|
|
|
+var a = '\n';
|
|
|
+
|
|
|
+alert("Тут есть " + a + "перенос " + a + "строки");
|
|
|
+```
|
|
|
+
|
|
|
+```php
|
|
|
+$a = "\n";
|
|
|
+
|
|
|
+echo ("Тут есть".$a."перенос ".$a. "строки");
|
|
|
+```
|