Цитата:
typeof (11.4.3, ES-3) - это рекурсивное UnaryExpression. UnaryExpression : [...] typeof UnaryExpression [...] Т.е. можно написать так: alert(typeof typeof []); // string Также, UnaryExpression в одном из нетерминалов распадается на PostfixExpression: UnaryExpression : PostfixExpression [...] Далее, нетерминал PostfixExpression может содержать LeftHandSideExpression: PostfixExpression : LeftHandSideExpression [...] который, в свою очередь одним из нетерминалов имеет CallExpression. LeftHandSideExpression : [...] CallExpression CallExpression имеет у себя MemberExpression. CallExpression : MemberExpression Arguments [...] MemberExpression может содержать PrimaryExpression: MemberExpression : PrimaryExpression [...] А уже PrimaryExpression (наконец-то ;)) одним из своих нетерминалов имеет Identifier: PrimaryExpression : [...] Identifier [...] А дальше, работает обычное разрешение идентификаторов в Scope chain (10.1.4). И в этом случае будет возвращён объект типа Reference с базой null и именем свойства - "X". Главное здесь - база null, поскольку далее отрабатывает пункт (3) алгоритма typeof: 3. If GetBase(Result(1)) is null, return "undefined". Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Спасибо :)
|
Цитата:
|
Начитался блин всяких style guide'ов и черновиков ECMAScript 5 :-E надо же всегда помнить про IE!
По новому стандарту ссылка arguments.callee не будет работать в "strict mode"; Решил попонтоваться и избавится он нее заранее следующим образом: (function callee() { … if (…) { setTimeout(callee, …); } }());Но у нас же есть JScript, в котором такая функция будет видна и в текущем контексте исполнения: (function callee() {}); alert(callee); Цитата:
Вот и улучшили код) |
Цитата:
var referenceToNFE = function testNFE() { alert('testNFE'); }; alert(referenceToNFE === testNFE); // false referenceToNFE.newProperty = 10; alert(testNFE.newProperty); // undefined // однако, два объекта выполняют // одинаковые действия testNFE(); // "testNFE" referenceToNFE(); // "testNFE" Подробней. |
А вот чем им, собственно, arguments.callee не угодил?
|
А чем им модель w3c не угодила Вот-вот. Её ведь в конце концов можно расширить и не превратив в модель Microsoft-а
|
Цитата:
|
Назовёте некропостером... Но спрошу: почему в javascript используется чаще всего «египетский» стиль расставления фигурных скобок? Мне кажется читаемее (ну и слово) то есть читабельнее(ещё хуже) было бы как в Java/C/C++?
И если я пишу вот эдак: function print(txt) { document.write(txt,"<br>"); }Это приемлемо? Египетская сила =) |
try { // Code } catch (e) { // Code } Так тоже читабельнее? Или так: do { // Code } while (); Имхо, код разрастается неоправдано. |
Часовой пояс GMT +3, время: 16:15. |