javascript - 类型未定义。哪个更快更好?

标签 javascript performance undefined

这里

var a = {}

什么时候

if(typeof a.b == "undefined"){
  console.log("undefined");
}

if (!a.b){
  console.log("undefined");
}

两者都返回"undefined" 以及何时

if(typeof c.b == "undefined"){
  console.log("undefined");
}

if (!c.b){
  console.log("undefined");
}

两者都会引发错误c is not defined

看起来像 2 if-else上面的语句的作用是一样的。那么哪种方式更好呢?

最佳答案

如果您正在寻找一种方法来检查成员是否存在,您应该使用 in 运算符

if ("b" in a) {
    ...
}

引发错误c is not Define,因为c未在程序中的任何位置定义。

typeof a.b 将返回的是 a.b 中存储的数据类型。如果b确实存在并且它的值实际上是undefined怎么办? typeof a.b!a.b 都将计算为真值。因此,它们不应该用于成员存在检查。

请查看this answer了解为什么 in 应该成为成员存在的首选。

关于javascript - 类型未定义。哪个更快更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21036373/

相关文章:

javascript - 无缘无故地在控制台中打印未定义,Javascript

c - 在 alpine 图像上构建 lua-openssl 时对 `strerror_s' 的 undefined reference

jquery - $.fancybox.close() 不起作用

javascript - 通过 javascript 输入验证

javascript - 我没有与动态创建的元素相同的渲染 - JQuery - Bootstrap

c# - Unity3D 中的 Time.time vs DateTime.UtcNow.Millisecond 性能?

ruby - 为什么人们说 Ruby 很慢?

javascript - 创建 node.js 静态 html(或其他)来编辑包中的文件。构建实时 Sass 编辑器

javascript - Anychart Chart.animation 打破了 pie3d 图表类型

multithreading - 混合SIMD指令和多线程时,我会受到性能损失吗?