使用typeof vs===检查未声明的变量会产生不同的结果
Using typeof vs === to check undeclared variable produces different result
如果我有一个未声明的变量并使用typeof
,它会告诉我它是undefined
。但是如果我使用if (qweasdasd === undefined)
检查它,它会抛出一个异常。
我不理解这种行为,因为如果第一个检查告诉undefined
,那么第二个检查应该计算为if (undefined === undefined)
,为什么它会抛出ReferenceError异常?
typeof
看起来像一个函数调用,但它不是——它是一个运算符。操作员可以违反规则。CCD_ 7不假定CCD_ 8存在;它是否存在以及它是什么是CCD_ 9存在以发现的。然而,当您测试qweasdasd === undefined
时,您使用的是qweasdasd
作为值,当您使用未分配值的变量时,JS会抱怨。
试图读取未声明变量的值(在将该值与undefined
的值进行比较之前必须执行此操作(会引发ReferenceError。
将typeof
运算符应用于未声明的变量不会。
我想我对此有一个非常简单的解释——因为规范是这么说的:
- 如果未定义变量,则
typeof
运算符不应引发ReferenceError异常
- 如果Type(val(为Reference,则
a.如果IsUnsolvableReference(val(为true,则返回"undefined"
- 如果操作数引用了未定义的变量,则
===
运算符应引发ReferenceError异常
- 设lval为GetValue(lref(
[在GetValue的定义中,我们有]
- 设base是调用GetBase(V(的结果
- 如果IsUnsolvableReference(V(,则抛出ReferenceError异常
您有一个未定义的变量,但没有未定义的对象值。
console.log(variable) // undefined
console.log(typeof variable) // "undefined"
console.log(variable === undefined) // Reference error
variable = undefined ;
console.log(variable === undefined) // true
尝试访问Javascript中未定义的变量会得到ReferenceError
。typeof
正在工作,因为它没有访问变量值。它正在检查其类型。
typeof不需要定义的变量。它的参数应该是表示要返回其类型的对象或基元的表达式。
typeof
是一个运算符,它返回一个字符串,指示未赋值操作数的类型。未赋值的操作数是否未定义并不重要。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof
>>> if (a !== 'undefined');
Exception: ReferenceError: Can't find variable: a
>>> if (typeof a !== undefined);
undefined
>>> if (typeof a !== void 0);
undefined
- 将地理编码结果转换为php变量以发布到mysql数据库
- 存储区向变量返回了结果
- 如何将解析云代码的query.count结果保存在变量中
- 设置为负数的变量计算结果为true
- 向模板实例变量传递调用方法调用的结果时出现异常
- 将函数结果传递给Javascript中的另一个函数变量
- MongoDB MonkAPI根据数据库请求之外可用的查找结果设置变量
- 将ajax请求结果分配给jquery函数中的变量
- 如何在javascript变量中获取php文件的结果
- 使用动态变量名更新JSON中的结果
- 将结果从javascript发布到变量
- Javascript我可以't达到函数中的结果变量
- 在不使用200行var的情况下,在结果字段中添加顺序命名的变量?[PDF表格]
- 使用passthrough将ajax结果中的变量发送到php
- 如何从批处理文件调用一个带有2个参数的java脚本函数,并将结果返回到环境变量
- 调用函数而不将其结果分配给变量
- 2个SQL查询.两者独立工作.当我把它们放在一起时,第一个查询的结果变量是空的.为什么?
- 将结果变量保留在for循环之外(Javascript)的区别是什么?
- 有没有办法传递结果变量而不显示
标记在文本区域 - 写控制台.时间结果变量