繁体   English   中英

给 JavaScript 中的 undefined 赋值

[英]Assigning value to undefined in JavaScript

我正在用 JavaScript 编写一些代码。 当我无意中遇到这个。

undefined = 'some value' //does not give any error

true = 'some value';   //gives error

null = 'some value';   //gives error

第一个语句是有效的而其他两个是无效的。 据我所知,undefined、true 和 null 都是可以分配给某个变量的值,因此所有这些都应该是无效的语句。

来自MDN

undefined是全局对象的属性; 即,它是全局范围内的变量。 undefined的初始值是原始值undefined

因此,您可以将值分配给undefined ,这与保留关键字truenull不同。 请注意,这与NaN的情况相同,它也不是保留关键字,因此,您可以为其分配任何值。


只是为了添加更多,即使你给undefined赋值也没关系,它不会写入它,因为它是一个只读属性。

再次引用 MDN。

在现代浏览器(JavaScript 1.8.5 / Firefox 4+)中,根据 ECMAScript 5 规范,undefined 是不可配置、不可写的属性。 即使不是这种情况,也要避免覆盖它。

在此处输入图像描述


通过在文件的最顶部或函数内部声明"use strict"来避免此类情况,从而在您的 JavaScript 中更喜欢使用严格模式。 使用类似的东西

"use strict";
undefined = 'test'; //will raise an error, refer to [1]

[1] VM1082:2 未捕获类型错误:无法分配给对象“#”的只读属性“未定义”

这是因为undefined 不是 JavaScript 中的保留字,尽管它有特殊的含义。 所以可以给它赋值,整个语句是有效的。 truenull是保留字,不能赋值。

供参考: JavaScript 保留字

我直接引用 MD Js 文档。

虽然可以在全局范围以外的任何范围内将其用作标识符(变量名)(因为 undefined 不是保留字),但这样做是一个非常糟糕的主意,会使您的代码难以维护和调试。

//DON'T DO THIS

// logs "foo string"
(function() { var undefined = 'foo'; console.log(undefined, typeof undefined); })();

// logs "foo string"
(function(undefined) { console.log(undefined, typeof undefined); })('foo');

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/undefined

您不能在任何语言中使用保留字(关键字)的名称声明变量,无论是脚本还是编程。

如果你想使用它,你可以在可变名称的最前面使用_下划线。

喜欢:_true、_null 或 _anythingwhatyouwant

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM