Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 想知道更多关于未定义的信息吗_Javascript_Undefined - Fatal编程技术网

Javascript 想知道更多关于未定义的信息吗

Javascript 想知道更多关于未定义的信息吗,javascript,undefined,Javascript,Undefined,如您所见,undefined在javascript中不是一个关键字(对吗?),所以我们可以将其用作变量,尽管我确信这不是一个好主意。现在我的问题是为什么我不能给undefined赋值 代码: 如果有任何建议,我们将不胜感激。请参阅关于“undefined”在JavaScript中的用法的完整解释(我不是作者) 与其他语言相比,JavaScript的未定义概念是 有点困惑。特别是,试图理解引用错误 (“x未定义”)以及如何最好地针对它们进行编码 令人沮丧 在JavaScript中有未定义(类型)、

如您所见,undefined在javascript中不是一个关键字(对吗?),所以我们可以将其用作变量,尽管我确信这不是一个好主意。现在我的问题是为什么我不能给undefined赋值

代码:

如果有任何建议,我们将不胜感激。

请参阅关于“undefined”在JavaScript中的用法的完整解释(我不是作者)

与其他语言相比,JavaScript的未定义概念是 有点困惑。特别是,试图理解引用错误 (“x未定义”)以及如何最好地针对它们进行编码 令人沮丧

在JavaScript中有未定义(类型)、未定义(值)和 未定义(变量)

Undefined(type)是内置的JavaScript类型

undefined(value)是一个原语,是 未定义类型。未指定值的任何属性, 假定为未定义的值。(ECMA 4.3.9和4.3.10)。函数 没有return语句,或者函数返回为空 语句返回未定义的。未应用函数的值 参数未定义

未定义(变量)是一个全局属性,其初始值为 未定义(值),因为它是全局属性,所以我们也可以访问它 作为一个变量

从ECMA 3开始,其值可以重新分配:

不用说,将值重新分配给未定义的变量是非常困难的 错误的做法,事实上ECMA 5不允许这种做法(尽管 当前一组完整的浏览器版本,只有Safari强制执行此功能)

这里可以看到关于“undefined”如何在JavaScript中使用的完整解释(我不是作者)

与其他语言相比,JavaScript的未定义概念是 有点困惑。特别是,试图理解引用错误 (“x未定义”)以及如何最好地针对它们进行编码 令人沮丧

在JavaScript中有未定义(类型)、未定义(值)和 未定义(变量)

Undefined(type)是内置的JavaScript类型

undefined(value)是一个原语,是 未定义类型。未指定值的任何属性, 假定为未定义的值。(ECMA 4.3.9和4.3.10)。函数 没有return语句,或者函数返回为空 语句返回未定义的。未应用函数的值 参数未定义

未定义(变量)是一个全局属性,其初始值为 未定义(值),因为它是全局属性,所以我们也可以访问它 作为一个变量

从ECMA 3开始,其值可以重新分配:

不用说,将值重新分配给未定义的变量是非常困难的 错误的做法,事实上ECMA 5不允许这种做法(尽管 当前一组完整的浏览器版本,只有Safari强制执行此功能)


因为在较旧的环境中(JS1.8.5之前),可以更改undefined的值,并且检查不存在的内容的方式可能会中断。在自己的闭包中开发库是一种常见的选择,使用IIFE模式创建一个未定义的变量,该变量不会从外部代码(例如jQuery和大多数库)中被触及,以下是一个示例:

(function(undefined) {
    //code which safely uses undefined
})();
请注意,有一个名为
undefined
的参数,IIFE在调用时没有任何参数,使得
undefined
实际上变成
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

还请记住,对
未定义的
使用相等检查(
=
)也会检查
null
(事实上,
未定义==null
,但
未定义!==null
),因此我建议使用严格相等运算符(
=
),它只检查未定义的
,因为在较旧的环境中(在JS 1.8.5之前),可以更改未定义的值,而检查不存在的内容的方式可能会中断。在自己的闭包中开发库是一种常见的选择,使用IIFE模式创建一个未定义的变量,该变量不会从外部代码(例如jQuery和大多数库)中被触及,以下是一个示例:

(function(undefined) {
    //code which safely uses undefined
})();
请注意,有一个名为
undefined
的参数,IIFE在调用时没有任何参数,使得
undefined
实际上变成
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
还请记住,对
未定义的
使用相等检查(
=
)也会检查
null
(事实上,
未定义==null
,但
未定义!==null
),因此我建议使用严格相等的检查