В настоящее время я изучаю javascript, следуя серии книг «Вы не знаете js».
В книге, раздел «Область и закрытие», где автор обсуждает «IIFE», автор упомянул
Другое применение этого шаблона направлено на решение (незначительной ниши) проблемы, связанной с тем, что значение неопределенного идентификатора по умолчанию может быть неправильно перезаписано, что приведет к неожиданным результатам. Назвав параметр неопределенным, но не передав никакого значения для этого аргумента, мы можем гарантировать, что неопределенный идентификатор на самом деле является неопределенным значением в блоке кода:
undefined = true; // setting a land-mine for other code! avoid! (function IIFE( undefined ){ var a; if (a === undefined) { console.log( "Undefined is safe here!" ); } })();
Но я думал, что undefined
- это недоступная для записи переменная. И когда я попробовал undefined = true;
в браузере Chrome, значение undefined
действительно не изменилось (т.е. присваивание не удалось выполнить в нестрогом режиме). Так почему же автор пытается назначить undefined
?
А во-вторых, я не совсем уверен, какова цель функции IIFE
с параметром undefined
? Каковы некоторые из потенциальных применений?
undefined
?undefined
не всегда был доступен только для чтения. Раньше, чтобы избежать поломки вашего кода из-за того, что кто-то испортилundefined
, вы просто создали свою собственную версию. - person Felix Kling   schedule 07.07.2017undefined
, но не передавая никакого значения для этого аргумента, мы можем гарантировать, что идентификаторundefined
на самом деле является неопределенным значением в блоке кода - person melpomene   schedule 07.07.2017undefined
раньше было доступно для записи, но теперь это свойство доступно только для чтения. Имеет смысл - person Thor   schedule 07.07.2017undefined
является ненастраиваемым и недоступным для записи свойством в соответствии со спецификацией ECMAScript 5. Так что, по-видимому, до ES5undefined
был доступен для записи. - person melpomene   schedule 07.07.2017undefined
в качестве параметра, но я думаю, что я пытался спросить: каково практическое использование такой вещи? - person Thor   schedule 07.07.2017