这个未定义
全局属性表示原语价值未定义
。它是JavaScript的基元类型.
未定义
是的属性全局对象也就是说,它是全局范围内的变量。
在所有非传统浏览器中,未定义
是不可配置、不可写入的属性。即使不是这样,也要避免覆盖它。
未赋值的变量类型为未定义
.A型方法或语句也返回未定义
如果正在进行的变量求值没有赋值。函数返回未定义
如果值不是返回
.
注:虽然您可以使用未定义
作为标识符(变量名)在全局范围以外的任何范围内(因为未定义
不是保留字),这样做是一个非常糟糕的主意,会使代码难以维护和调试。
//不要这样做(() => {const undefined=“foo”;console.log(未定义,类型为未定义);//foo字符串})();((未定义)=>{console.log(未定义,类型未定义);//foo字符串})(“foo”);
你可以使用未定义
以及严格的等式和不等式运算符确定变量是否有值。在以下代码中,变量x个
未初始化,并且如果
语句的计算结果为true。
设x;如果(x===未定义){//这些语句执行}其他{//这些语句不执行}
注:这个严格平等操作员(与标准平等运算符)必须在此处使用,因为x==未定义
还检查是否x个
是无效的
,而严格相等则不然。这是因为无效的
不等于未定义
.
请参阅平等比较与相同了解详细信息。
或者,类型
可用于:
设x;if(类型x===“未定义”){//这些语句执行}
使用的一个原因类型
就是它不会抛出如果变量尚未声明,则返回错误。
//之前未声明x//计算结果为true,没有错误if(类型x===“未定义”){//这些语句执行}//引发ReferenceError如果(x===未定义){}
然而,还有另一种选择。JavaScript是一种静态范围的语言,因此可以通过查看变量是否在封闭上下文。
全局范围绑定到全局对象,所以可以通过检查上存在的属性全局对象,使用在里面
运算符,例如:
if(窗口中的“x”){//这些语句仅在全局定义x时执行}
这个空隙
操作符是第三种选择。
设x;如果(x===无效0){//这些语句执行}//之前未声明y如果(y===无效0){//throws Uncaught ReferenceError:y未定义}
BCD表仅在浏览器中加载