Страницы

Поиск по вопросам

понедельник, 8 октября 2018 г.

Не могу понять роль нуля в данном контексте. JS

Прежде чем перейти сюда чтобы задать вопрос, я честно на протяжении часа гуглил, но не смог найти ответов, хоть и в некоторых ссылках встречалось похожее. Вопрос следующий - что в JS значит ноль в следующей конструкции:
var n = (0, window.unescape)("somestring");
Буду благодарен за ответ или ссылку где прочитать можно.


Ответ

в данном случае он ничего не значит и вместо него могло быть что угодно. Нужен он тут для срабатывания оператора запятая.
При таком применении оператора запятой можно получить ссылку на метод оторванный от текущего контекста и при вызове его будет использован глобальный контекст. В данном случае window
То есть, запись в вопросе эквивалентна следующей
var unescape = window.unescape; var n = unescape("something");
Учитывая, что в данном случае всегда функция будет вызываться в глобальном контексте нет смысла это делать и можно обойтись обычным вызовом
var n = window.unescape("somestring");

Пример когда это имеет смысл
var a = { func: function() { console.log('eval context is window: ', (0, eval)("this") === window); console.log('eval context is current object: ', eval("this") === a); }, func1: function() { console.log('context: ', this.toString()); } } a.func(); (1, a.func1)(); (a.func1)();

Комментариев нет:

Отправить комментарий