以下两个示例似乎都起作用。我只是想知道两者之间的区别是什么,它们又如何起作用?

if (a[b].hasOwnProperty(c)) {return "Works";}

if (a[b][c]) {return "Works";}

但是,由于某种原因,以下内容似乎会引起很多问题,尽管它似乎应该可以工作:
if (typeof(a[b][c]) !== undefined) {return "Works";}

我只是不明白到底怎么了。

非常感谢,我才刚开始,所以这很容易。

最佳答案

typeof x永远不能是undefined;它永远是一个字符串。该字符串可以是"undefined",但是不是undefined
a[b].hasOwnProperty(c)a[b][c]之间有区别:

如果值存在,但falsy one ( a[b][c] , false , false , 0 , "" , NaN )是ojit_a,则

  • null将为undefined
  • hasOwnProperty仅查看对象本身内的属性,而不查看原型(prototype)链中的属性。 (但是,即使是伪造的值,它也会返回true。)
  • 关于javascript - JavaScript中hasOwnProperty和if(a [b] [c])之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51812263/

    10-11 23:56