在javascript中为undefined分配值

时间:2017-07-06 07:35:45

标签: javascript jquery

我在javascript中编写了一些代码。当我偶然遇到这个时。

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

true = 'some value';   //gives error

null = 'some value';   //gives error

第一个语句如何有效,而另外两个语句无效。据我所知,undefined,true和null都是可以赋值给某个变量的值,因此所有这些都应该是无效的语句。

4 个答案:

答案 0 :(得分:5)

来自MDN

  

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

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

只是为此添加更多内容,即使您为undefined分配值也没关系,它不会写入它,因为它是一个只读属性。

再次从MDN引用。

  

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

enter image description here

首选在JavaScript中使用严格模式,在文件的最顶部或函数内部声明"use strict"以避免此类事情。使用像

这样的东西
"use strict";
undefined = 'test'; //will raise an error, refer to [1]
  

[1] VM1082:2未捕获的TypeError:无法分配给读取   只有属性'undefined'的对象'#'

答案 1 :(得分:3)

这是因为 undefined不是JavaScript中的保留字,即使它具有特殊含义。因此可以为其分配值,整个语句有效。 truenull是保留字,无法分配值。

供参考:JavaScript Reserved Words

答案 2 :(得分:0)

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

如果你想使用它,你可以在varibale名称的第一个使用_下划线。

喜欢:_true,_null或_anythingwhatyouwant

答案 3 :(得分:0)

我直接引用了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