Страницы

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

среда, 4 декабря 2019 г.

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

#javascript


Прежде чем перейти сюда чтобы задать вопрос, я честно на протяжении часа гуглил,
но не смог найти ответов, хоть и в некоторых ссылках встречалось похожее. Вопрос следующий
- что в JS значит ноль в следующей конструкции:

var n = (0, window.unescape)("somestring");


Буду благодарен за ответ или ссылку где прочитать можно.
    


Ответы

Ответ 1



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

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

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