Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Javascript quiz · Perfection kills (https://javascript.ru/forum/offtopic/7580-javascript-quiz-%C2%B7-perfection-kills.html)

Dmitry A. Soshnikov 14.02.2010 16:54

Сюда тоже добавлю, пригодится знать:

1. Каков результат выражения 1..z:

a) SyntaxError
b) Новый object Range (эквивалентно new Range(1, "z")) включая цифры и буквы
c) undefined
d) Ошибка Range объекта (несовместимые типа для range: number и string)
e) ReferenceError "z" is not defined

2. Каков результат выражения 100['toString']['length']:

a) 100
b) 3
c) 1
d) SyntaxError
e) 8

Octane 14.02.2010 17:30

Без вариантов ответа 1-й вопрос был бы легче :D

Dmitry A. Soshnikov 14.02.2010 17:34

Цитата:

Сообщение от Octane
Без вариантов ответа 1-й вопрос был бы легче

На то это и quiz, чтобы проверить внимательность, и насколько человек уверен в своих ответах, не собьют ли его с толку, "вроде как тоже правильные ответы" ;)

Ответил на оба вопроса?

Octane 14.02.2010 17:40

Да. Ну 2-й вопрос после 14-го из теста легко было понять, а вот на 1-й сначала задумался…

Dmitry A. Soshnikov 14.02.2010 18:40

Еще один (правда, уже обсуждался здесь):

function foo() {
  return this;
}
 
alert(foo === foo.prototype.constructor); // true
alert(foo() === foo.prototype.constructor()); // ?


a) true
b) false
c) зависит от реализации

http://perfectionkills.com/javascrip...#comment-58304

B@rmaley.e><e 14.02.2010 18:59

Да, первый запутывает. Только набирая alert(1..z) сообразил, что здесь на самом деле.

UPD: Вот такой интересный код найден на просторах интернета. Не знаю, на сколько он в тему, но мне показался интересным.
(x=[].reverse)() === window // true
Вопро : как так?

Octane 14.02.2010 19:25

Цитата:

Сообщение от B@rmaley.e><e
как так?

Это нормально. Метод reverse по завершении алгоритма выполняет return this, а т.к. мы сохранили ссылку на него в свойство x объекта window, то вызван по этой ссылке он будет в контексте window, и возвратит соответственно window.

Dmitry A. Soshnikov 14.02.2010 19:31

Цитата:

Сообщение от Octane
Это нормально. Метод reverse по завершении алгоритма выполняет return this, а т.к. мы сохранили ссылку на него в свойство x объекта window, то вызван по этой ссылке он будет в контексте window, и возвратит соответственно window.

Почти ;)

А здесь мы не сохранили в свойство объекта window, но, всё равно - результат window, почему?

var a = {
  x: null
};

(a.x = [].reverse)() === window; // true


Тоже, кстати, разбирался этот вопрос здесь.

Dmitry A. Soshnikov 14.02.2010 19:39

Ещё один интересный с топика (немного изменил):

alert((function(){return 2*3;}).toString() === function () { return 6; }.toString());

a) true
b) false
c) зависит от реализации

Octane 14.02.2010 19:45

а да… после операции присваивания мы получим ссылку на функцию. Тогда так:
Метод reverse по завершении алгоритма выполняет return this, а т.к. мы получим на него ссылку в результате операции присваивания, то вызван по этой ссылке он будет в контексте window, и возвратит соответственно window.

Сбило то, что ([].reverse)() сохраняет контекст

Вот этот вопрос: http://twitter.com/tobeytailor/status/8998006366


Часовой пояс GMT +3, время: 06:34.