==
运营商真的很有趣。人们认为它会usually doesn't behave。
这导致我准确调查冰山一角下发生了什么,根据MDN,它如下:
如果两个操作数的类型不同,则JavaScript会转换 操作数然后应用严格的比较。如果任一操作数是一个数字 或者布尔值,如果可能,操作数将转换为数字;其他 如果任一操作数是一个字符串,则另一个操作数转换为a 如果可能的话。如果两个操作数都是对象,那么JavaScript 比较操作数引用时相等的内部引用 内存中的同一个对象。
<子> (source) 子>
那么,为什么"undefined" == undefined
没有评估为真?
不应该undefined
转换为"undefined"
,然后根据此说明返回true?
答案 0 :(得分:20)
"undefined"
有一个值。它是9个字母:u-n-d-e-f-i-n-e-d。因此,字符串“undefined” not 具有未定义的值。 javascript 中的String
可以具有未定义的值,但此处String
对象具有定义的值恰好拼写为“未定义”。
使用您提供的解释,右侧的undefined
值将转换为没有赋值的String
对象,然后与String
“undefined进行比较“,没有比较。
答案 1 :(得分:2)
对于这些类型的问题,值得回到源头:ECMAScript 5.1 specification。第11.9.3节详细描述了双等于:
由于在这种情况下Type(x)为string
而Type(y)为undefined
,因此规则声明结果应为false。
答案 2 :(得分:0)
undefined
是内置类型Undefined
的javascript内置的原始值。进行x == undefined
之类的比较,在javascript中具有特殊含义:它检查变量是否尚未定义。
答案 3 :(得分:0)
"undefined"
字面意思是string
,undefined
是object
。我认为它会使用nothing
或""
或an empty string
投射右侧操作数。因此"undefined" == null
返回false
。
答案 4 :(得分:-2)
undefined
是一个特殊的javascript关键字,以下是检查未定义变量/属性的方法。
var a = undefined;
//if( a == undefined )
//if( a === undefined )