严格的相等检查undefined

时间:2017-11-30 07:06:17

标签: javascript undefined

我似乎无法想出这个答案,所以也许你可以帮助解决一些问题。在我的辩护中,undefined是无法找到变量,键,值等时返回的消息。消息应该是一个字符串?否?

let foo = [{id: 1, you: "me"}]
let undif = foo.find(i => i.he === 1)
if (typeof undif === "undefined") {
  console.log(undif) // not fired
}

if (typeof undif == undefined) {
  console.log(undif) // not fired
}

if (typeof undif == 'undefined') {
  console.log(undif) // fired!
}

为什么我不能使用typeof undif === 'undefined

2 个答案:

答案 0 :(得分:0)

你的代码有语法错误(在if之后缺少开括号),但一旦修复了,第一个和第三个都被解雇了。

let foo = [{id: 1, you: "me"}]
let undif = foo.find(i => i.he === 1)
if (typeof undif === "undefined") {
  console.log('1', undif) // fired
}

if (typeof undif == undefined) {
  console.log('2', undif) // not fired
}

if (typeof undif == 'undefined') {
  console.log('3', undif) // fired!
}

答案 1 :(得分:0)

三等于查找值和类型;

因此undefined === 'undefined'将返回false

出于同样的原因,你的第一个案例返回true

This是关于双等和三等于以及有价值的比较的精彩文章