想要了解更多关于未定义的信息
Want To Know More About Undefined
如您所见,undefined在javascript中不是关键字(对吗?(。因此,我们可以将其用作变量,尽管我确信这是一个坏主意。现在我的问题是为什么我不能给未定义一个值。
法典:
var undefined=3;
undefined;//still undefined
任何建议将不胜感激。
因为在较旧的环境中(在 JS 1.8.5 之前(,可以更改 undefined 的值,并且检查不存在的内容是以可能破坏的方式进行的。在自己的闭包中开发库是一种常见的选择,使用 IIFE 模式创建一个未定义的变量,该变量不受外部代码(例如 jQuery 和大多数库(的接触,这是一个示例:
(function(undefined) {
//code which safely uses undefined
})();
请注意,有一个名为 undefined
的参数,并且在没有任何参数的情况下调用 IIFE,从而使该undefined
有效地变得undefined
。在较新的环境中,不可能更改未定义的值,但为了逆向兼容性,它已被大量使用。
然而,检查未定义类型的最安全方法是使用 typeof
。事实上,它的用法不能以任何方式被覆盖,它可以安全地使用:typeof foo == 'undefined'
.
请记住,未定义和未声明之间存在细微差异:
var x; //declared but undefined
x === undefined; //true
但是在较旧的环境中,您可以做到
var undefined = 1;
var x; //declared, of type undefined, but...
x === undefined // false, because undefined is 1 and x is of type undefined
正如我之前所说,检查未定义变量(确保它在旧环境中工作(的最安全方法是使用 typeof:
var undefined = 1;
var x;
typeof x == 'undefined'; //true
还要记住,将相等性检查( ==
( 与 undefined
一起使用也会检查null
(实际上,undefined == null
但undefined !== null
(,所以我建议使用严格的相等运算符( ===
(,它只检查undefined
。
根据 MDN 的说法,从 JavaScript 1.8.5 开始,undefined 变成了不可写的。这意味着在此之前将其用作变量是完全"合法的"。
但这显然不是一个好主意。
在此处查看有关如何在 JavaScript 中使用"undefined"的完整解释(我不是作者 http://javascriptweblog.wordpress.com/2010/08/16/understanding-undefined-and-preventing-referenceerrors/
与其他语言相比,JavaScript 的 undefined 概念是一个 有点混乱。特别是,试图理解引用错误 ("x 未定义"(以及如何最好地针对它们进行编码 令人 沮丧。
在 JavaScript 中,有 Undefined(类型(、undefined(值(和 未定义(变量(。
Undefined(类型(是一种内置的JavaScript类型。
未定义(值(是一个基元,是 未定义的类型。尚未分配值的任何属性, 假定未定义的值。(ECMA 4.3.9和4.3.10(。一个函数 没有 return 语句,或带有空返回的函数 语句返回未定义。未提供函数的值 参数未定义。
未定义(变量(是一个全局属性,其初始值为 undefined(值(,因为它是一个全局属性,我们也可以访问它 作为变量。
从 ECMA 3 开始,可以重新分配其值:
undefined = "washing machine"; //assign a string to undefined (variable)
typeof undefined //"string"
f = undefined;
typeof f; //"string"
f; //"washing machine"
不用说,将值重新分配给未定义的变量是非常 不良做法,事实上 ECMA 5 不允许这样做(尽管其中 当前的完整浏览器版本集,只有 Safari 强制执行(。
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 如何检查管道中未定义的项目
- TypeError:无法读取属性'推'未定义的JavaScript
- $window.ga在AngularJS事件中未定义
- *简单*解析云代码查询失败”;TypeError:无法调用方法'获取'未定义的“检索该信息”;
- 正在从web服务接收未定义的信息
- Google Maps API V3 信息窗口错误:“信息窗口未定义”
- 用于从许多带有“for”循环的URL中获取HTML信息的X射线使对象未定义
- 无法读取未定义的属性“打开”.谷歌地图信息窗口循环
- 谷歌地图 api v3 - “信息窗口未定义”错误
- 未定义统计信息
- 想要了解更多关于未定义的信息
- Google Places API-未定义Places详细信息请求
- 谷歌地图信息窗口左箭头,右箭头传递TypeError:无法读取属性'__e3_'的未定义
- 在Google Scripts中使用JavaScript将信息传输到电子表格,但电子表格显示未定义
- 谷歌地图v3,错误信息“谷歌是未定义的”
- 可融合的自定义信息窗口;绑定问题-未定义的属性
- 未捕获的引用错误:未定义详细信息
- 信息:& # 39;ActiveXOjbect& # 39;是未定义的