Изменения

ECMAScript и все-все-все

1631 байт добавлено, 15:43, 10 октября 2016
Нет описания правки
=== Приколы @@ ===
Приколов в JS немного, но они есть.
<source lang="javascript">
// "+" переопределён для строк
console.log("100"+1 == "1001");
console.log("100"-1 == 99); // можно приводить к числу через a-0 или 1*a
 
// в ключах хеша true, false, null и undefined превращаются
// в строки "true", "false", "null" и "undefined"
// имхо, в PHP (true="1", false="", null="") сделано логичней
var a = {};
a[false] = 123;
console.log(a["false"] == 123);
 
// var локальны в функциях!
function f()
{
for (var i = 0; i < 100; i++)
{
// через 0.5сек 100 раз напечатает "100"
setTimeout(function() { console.log(i); }, 500);
}
}
 
// и определяются как будто в начале!
var a = 42;
function foo() { alert(typeof a); var a = 10; }
foo(); // --> не 42, а undefined!
</source>
 
=== Приколы 2 @@ ===
 
<source lang="javascript">
// эта функция, увы, вернёт undefined ({} станет блоком, а key: меткой)
// хеши начинать строго с той же строки!
function fn()
{
return
{
key: "value"
};
}
 
// (function() {})() - определение + вызов функции, типично, чтобы не засорять контекст
// точки с запятой опциональны, но лучше их ставить. иначе:
A.prototype.m = function()
{
} /* вот тут нужна ; */
 
(function() { B.prototype.m = ... })();
</source>
[[Категория:VitaliPrivate]]