php2js.md 5.8 KB

Javascript для PHP'истов

Этот материал рассчитан на людей, которые уже знакомы с программированием на PHP и желают быстро разобраться с особенностями Javascript, без которого сейчас не обойдется ни один веб-программист.

use strict

Javascript-интерпретатор в браузере может работать в двух режимах: "обычном" и в "строгом":

  • Обычный режим предназначен для совместимости.
  • Строгий режим включает современный стандарт Javascript (ECMAScript 5 или новее)

В зависимости от режима поведение интерпретатора может меняться. Далее это будет упоминаться в тех или иных моментах. По умолчанию интерпретатор работает в обычном режиме, для включение строгого режима используется строка 'use strict' в начале Javascript-кода.

"use strict";

или

'use strict';

Переменные и типы данных

В отличие от PHP, Perl и Shell-интерпретаторов, с которых это и пошло, в Javascript переменные объявляются без знака $:

a = 5;
$a = 5;

Такой код в обычном режиме Javascript декларирует глобальную переменную, которая становится полем объекта window, даже если переменная определена внутри функции:

a = 5;
function b(){
    a = 10;
}
b()
alert(a);

Код выше аналогичен:

$a = 5;
function b(){
    global $a;
    $a = 10;
}
b();
echo($a);

Для декларации локальных переменных используется ключевое слово var.

a = 5;
function b(){
    var a = 10;
}
b();
alert(a);

Код выше аналогичен:

$a = 5;
function b(){
    $a = 10;
}
b();
echo($a);

В строгом режиме определение переменных без var недопустимо и вызывает ошибку:

'use strict';

var a = 5; //без var тут бы была ошибка
function b(){
    var a = 10;
}
b();
alert(a);

Во избежание ошибок ВСЕГДА определяйте переменные через var.

Типы данных

Основные типы данных в JS совпадают с типами данных PHP, за некоторыми исключениями:

  • Целые и дробные числа представлены едиными типом Number
  • Под "массивом" в JS подразумевается массив с целочисленными ключами.
  • Ассоциативные массивы и объекты - это одно и то же;
  • Для переменных без значения и значений отсутствующих ключей в ассоциативных массивах вместо PHP NULL используется аналогичный тип undefined
  • Так же существует тип null, который применяется программистами для задания "пустых" значений и/или в DOM.

;

В отличие от PHP и многих других языков с C-подобным синтаксисом, в JS точка с запятой не является обязательной, однако нужна в некоторых случаях, например при написании операторов в одну строку:

var a = 5
var b = 6
var c = "string"
var d

a ++; b += a; d = c + a;

Во избежание ошибок просто добавляйте ; "как обычно", в конце строки

Комментарии

Как в PHP.

Строки, переменные в них и конкатенация

В отличие от PHP, в JS нет разницы между одинарными и двойными кавычками:

var a = "\n";
var b = '\n';

alert(a == b);
$a = "\n";
$b = '\n';

echo (a == b);

В отличие от PHP, в JS нет подстановки переменных в строках в двойных кавычках:

var a = "\n";

alert("Тут нет a переноса a строк");
$a = "\n";

echo ("Тут есть $a перенос $a строки");

Таким образом, для добавления значения переменной в строку надо использовать конкатенацию В отличие от PHP, в JS конкатенация делается с помощью оператора +, а не .:

var a = '\n';

alert("Тут есть" + a + "перенос" + a + "строки");
$a = "\n";

echo ("Тут есть" . $a . "перенос" . $a . "строки");

+ и динамическая типизация.

Так как в JS нет отдельного оператора конкатенации (в PHP это .), то + между числами в строках может вас удивить: суть