未定义

这个未定义全局属性表示原语价值未定义。它是JavaScript的基元类型.

试试看

价值

原始值未定义.

的属性属性未定义
可写
可枚举
可配置

描述

未定义是的属性全局对象也就是说,它是全局范围内的变量。

在所有非传统浏览器中,未定义是不可配置、不可写入的属性。即使不是这样,也要避免覆盖它。

未赋值的变量类型为未定义.A型方法或语句也返回未定义如果正在进行的变量求值没有赋值。函数返回未定义如果值不是返回.

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

js公司
//不要这样做(() => {const undefined=“foo”;console.log(未定义,类型为未定义);//foo字符串})();((未定义)=>{console.log(未定义,类型未定义);//foo字符串})(“foo”);

示例

严格相等且未定义

你可以使用未定义以及严格的等式和不等式运算符确定变量是否有值。在以下代码中,变量x个未初始化,并且如果语句的计算结果为true。

js公司
设x;如果(x===未定义){//这些语句执行}其他{//这些语句不执行}

注:这个严格平等操作员(与标准平等运算符)必须在此处使用,因为x==未定义还检查是否x个无效的,而严格相等则不然。这是因为无效的不等于未定义.

请参阅平等比较与相同了解详细信息。

运算符类型和未定义

或者,类型可用于:

js公司
设x;if(类型x===“未定义”){//这些语句执行}

使用的一个原因类型就是它不会抛出如果变量尚未声明,则返回错误。

js公司
//之前未声明x//计算结果为true,没有错误if(类型x===“未定义”){//这些语句执行}//引发ReferenceError如果(x===未定义){}

然而,还有另一种选择。JavaScript是一种静态范围的语言,因此可以通过查看变量是否在封闭上下文。

全局范围绑定到全局对象,所以可以通过检查上存在的属性全局对象,使用在里面运算符,例如:

js公司
if(窗口中的“x”){//这些语句仅在全局定义x时执行}

void运算符和未定义

这个空隙操作符是第三种选择。

js公司
设x;如果(x===无效0){//这些语句执行}//之前未声明y如果(y===无效0){//throws Uncaught ReferenceError:y未定义}

规格

规范
ECMAScript语言规范
#二次定义

浏览器兼容性

BCD表仅在浏览器中加载

另请参见