Прежде чем перейти сюда чтобы задать вопрос, я честно на протяжении часа гуглил, но не смог найти ответов, хоть и в некоторых ссылках встречалось похожее. Вопрос следующий - что в 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)();
Комментариев нет:
Отправить комментарий