javascript:是否可以为 'undefined' 赋值? (来自你不知道的JS的问题)

标签 javascript undefined

阅读本章中的“你不知道”: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/

相关文章:

javascript、jquery 地理定位错误

javascript - 将 iframe 内容传输到新的空 iframe

javascript - Express 4 和 socket.io

javascript - 如何从 <form> 中获取数据并在单独的 <div> 中显示输入值

javascript - 从对象中删除未定义的属性

c - undefined variable 错误

c++ - 链接器错误 C++ "undefined reference "

typescript - TypeScript 中的 optional 参数可以为 null 吗?

javascript - 如何更改对话框组件中的默认动画?

c# - 如何在验证器最初启用时隐藏验证器的错误文本