【发布时间】:2016-04-14 22:48:53
【问题描述】:
了解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
它评估为 true 并运行 //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"不同。 -
既然你正在学习
typeof关键字,这里是 MDN docs (以防万一)。 -
如果您正在检查该属性是否存在,您实际上并不需要
typeof。你可以做(someNum-1) in object.prop,或者如果你担心继承的属性,object.prop.hasOwnProperty(someNum-1)。使用typeof不会区分具有undefined值的现有属性和不存在的属性。 -
@squint 我明白了。你能提供一个jsfiddle或短代码sn-p吗?不知道你写的方式
(someNum - 1)是不是数组的索引
标签: javascript typeof