|
@@ -0,0 +1,92 @@
|
|
|
+# Javascript для PHP'истов
|
|
|
+
|
|
|
+Этот материал рассчитан на людей, которые уже знакомы с программированием на **PHP** и желают быстро разобраться с особенностями **Javascript**, без
|
|
|
+которого сейчас не обойдется ни один веб-программист.
|
|
|
+
|
|
|
+## `use strict`
|
|
|
+
|
|
|
+Javascript-интерпретатор в браузере может работать в двух режимах: "обычном" и в "строгом":
|
|
|
+- **Обычный** режим предназначен для совместимости.
|
|
|
+- **Строгий** режим включает *современный* стандарт **Javascript** (ECMAScript 5 или новее)
|
|
|
+
|
|
|
+В зависимости от режима поведение интерпретатора может
|
|
|
+меняться. Далее это будет упоминаться в тех или иных моментах. По умолчанию интерпретатор работает в обычном режиме, для включение строгого режима
|
|
|
+используется *строка* `'use strict'` в начале **Javascript**-кода.
|
|
|
+
|
|
|
+```javascript
|
|
|
+"use strict";
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+или
|
|
|
+```javascript
|
|
|
+'use strict';
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+## Переменные и типы данных
|
|
|
+
|
|
|
+В отличие от **PHP**, **Perl** и **Shell**-интерпретаторов, с которых это и пошло, в **Javascript** переменные объявляются *без* знака `$`:
|
|
|
+
|
|
|
+```javascript
|
|
|
+a = 5;
|
|
|
+```
|
|
|
+
|
|
|
+```php
|
|
|
+$a = 5;
|
|
|
+```
|
|
|
+
|
|
|
+Такой код в обычном режиме **Javascript** декларирует *глобальную* переменную, которая становится полем объекта `window`, даже если переменная
|
|
|
+определена внутри функции:
|
|
|
+
|
|
|
+```javascript
|
|
|
+a = 5;
|
|
|
+function b(){
|
|
|
+ a = 10;
|
|
|
+}
|
|
|
+b()
|
|
|
+alert(a);
|
|
|
+```
|
|
|
+Код выше аналогичен:
|
|
|
+```php
|
|
|
+$a = 5;
|
|
|
+function b(){
|
|
|
+ global $a;
|
|
|
+ $a = 10;
|
|
|
+}
|
|
|
+b();
|
|
|
+echo($a);
|
|
|
+```
|
|
|
+
|
|
|
+Для декларации локальных переменных используется ключевое слово `var`.
|
|
|
+
|
|
|
+```javascript
|
|
|
+a = 5;
|
|
|
+function b(){
|
|
|
+ var a = 10;
|
|
|
+}
|
|
|
+b()
|
|
|
+alert(a);
|
|
|
+```
|
|
|
+Код выше аналогичен:
|
|
|
+```php
|
|
|
+$a = 5;
|
|
|
+function b(){
|
|
|
+ $a = 10;
|
|
|
+}
|
|
|
+b();
|
|
|
+echo($a);
|
|
|
+```
|
|
|
+
|
|
|
+> В **строгом** режиме определение переменных без `var` недопустимо и вызывает ошибку:
|
|
|
+
|
|
|
+```javascript
|
|
|
+'use strict';
|
|
|
+
|
|
|
+var a = 5;
|
|
|
+function b(){
|
|
|
+ var a = 10;
|
|
|
+}
|
|
|
+b()
|
|
|
+alert(a);
|
|
|
+```
|