阅读本章中的“你不知道”:https://github.com/getify/You-Dont-Know-JS/blob/2nd-ed/scope-closures/ch3.md
有一个代码片段:
undefined = true; // setting a land-mine for other code! avoid!
(function IIFE( undefined ){
var a;
if (a === undefined) {
console.log( "Undefined is safe here!" );
}
})();
对于立即执行的函数,我知道参数是未定义的,a也是未定义的,因此a===未定义。
我的问题是,如何为 undefined 赋值? 据我了解,undefined是js中的原始类型,那么undefined = true;是什么意思?
此外,为了测试我的理解,我稍微更改了这段代码:
undefined = 5; // set undefined to an integer? how can it be?
(function IIFE( undefined ){
var a;
if (a === undefined) {
console.log( "Undefined is safe here!" );
}
})(undefined); //still execute console.log function
结果保持不变
最佳答案
how is it possible to assign a value to undefined? As I understand, undefined is a primitive type in js, then what is the meaning of undefined = true;?
你是对的,undefined
是一个原始类型,但它不是 literal 。
当您访问undefined
时,您正在访问全局对象中的属性。
在 ES5 之前,该属性是可写的,并且可以被覆盖。
但是从 ES5 开始,它 was defined as not writable ,现在无法更改。
不是像 null
这样的字面意思, true
or false
,可以使用 undefined
作为变量的绑定(bind)名称、函数的参数或函数的名称,但不能在全局范围内使用。它将与内置的 undefined
发生冲突。
(function () {
'use strict';
const undefined = 'some value';
console.log(undefined); // "some value"
})();
关于javascript:是否可以为 'undefined' 赋值? (来自你不知道的JS的问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58417711/