2015-04-02 24 views
0

为什么typeof数组的数组的未定义值返回为“未定义”,而不是我的条件认为是真的?这是否与OR运算符或什么有关。看起来像我的程序正在运行内部条件,即使它不应该在内部条件。为什么typeof数组的数组未定义的值返回为“未定义”,而不是我的条件认为是真的?

if(typeof elemData !== 'undefined' || typeof rich[elemData.value] !== 'undefined') { 

    if(typeof rich[elemData.value]['title'] !== 'undefined') { 
     //do something 
    } 

} 

程序返回如下:

> if(typeof rich[elemData.value]['title'] !== 'undefined') { 
> 
> TypeError: Cannot read property 'title' of undefined 

我检查,如果rich[elemData.value]'undefined'和它说这不是通过我的条件。这是怎么回事?

+1

什么是类型错误与 '认为真正的' 呢?等式表达式(被认为扮演一个角色)*甚至从不执行*,因为异常是先被抛出*。错误信息完全解释了问题;打破异常并验证/修复不正确的断言。 – user2864740 2015-04-02 06:30:45

回答

5

当你需要和他们一起时,你正在对你的条件进行“或”。

if(typeof elemData !== 'undefined' || typeof rich[elemData.value] !== 'undefined') { 

应该是:

if(typeof elemData !== 'undefined' && typeof rich[elemData.value] !== 'undefined') { 
+0

这有效,但为什么? OR条件比AND更宽容。如果其中一个是真的,正确的话,OR可能是真的? – EhevuTov 2015-04-02 06:43:37

+0

是的,但为了您的代码工作,两个条件必须是真实的,因此连接词是连接词。 – 2015-04-02 06:44:48

+0

这是由于数组属性的内部属性以及typeof运算符如何在undefined上工作?我想它的工作方式与我在C/C++之类的东西中所期望的不同,我对此很好奇。 – EhevuTov 2015-04-02 06:45:39

相关问题