学习有关typeof
关键字,需要一些澄清:行为typeof关键字
虽然疑难解答我输出此代码到控制台:
console.log(typeof object.prop[someNum - 1]);
(在这种情况下sumNum === 0
)
的控制台打印出undefined
,这是我所期望的,因为prop[]
数组中的索引位置[someNum - 1]
不存在(所以我认为)。 然而,当我做这样的事情:
if(typeof object.prop[someNum - 1])
//some code
else
//other code
它评估为真,并运行//some code
,但是当我这样做:
if(object.prop[someNum - 1])
//some code
else
//other code
它评估为假,并运行//other code
。
我的印象是undefined
被认为是falsy value
,并且会在if statement
中评估为false。为什么if(typeof object.prop[someNum - 1])
声明评估为真?也有人可以指出我正确的方向,我可以在js
中了解更多关于负向索引数组的信息吗?它们处理的是多种语言,例如c#, c++, java, & php
。我认为当评估一个负数array
索引号时,它会是underfined
或抛出一个错误。
'undefined'与''undefined''不一样。 – SLaks
由于您正在学习'typeof'关键字,因此您可以在其中找到[MDN文档](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof)案件)。 –
如果你正在检查财产的存在,你并不需要'typeof'。你可以在object.prop中执行'(someNum-1),或者如果你担心继承的属性,'object.prop.hasOwnProperty(someNum-1)'。使用'typeof'不会区别存在于'未定义'值的属性和不存在的属性。 – 2016-04-14 22:57:13