将值与'undefined'进行比较的最佳方法是什么?

Joh*_*nGa 9 javascript

之间有什么区别吗?

var a;
(a == undefined)
(a === undefined)
((typeof a) == "undefined")
((typeof a) === "undefined")
Run Code Online (Sandbox Code Playgroud)

我们应该使用哪一个?

Jon*_*ves 11

具有讽刺意味的是,undefined可以在JavaScript中重新定义,而不是任何心智正常的人会这样做,例如:

undefined = "LOL!";
Run Code Online (Sandbox Code Playgroud)

所有未来的平等检查undefined都会产生意想不到的结果!

至于=====(等于运算符)之间的区别,==将尝试将值从一种类型强制转换为另一种类型,用英语表示0 == "0"即使类型不同(Number vs String)也将评估为true - 开发人员倾向于避免这种情况松散相等的类型,因为它可能导致难以在代码中调试错误.

因此,最安全的使用方法是:

"undefined" === typeof a
Run Code Online (Sandbox Code Playgroud)

检查undefinedness时:)

  • ({尝试未定义=真}}谁在他们......为什么...... AAHG!为什么会有人?这是EcmaScript的真正失败.我从来没有想过这样做. (2认同)