3 回答
TA贡献1786条经验 获得超11个赞
检查typeof数组元素而不是数组变量。
var arr = [ { move: 10}, {move: function () {}} ];
console.log(typeof arr) // object
console.log(typeof arr[0].move) // number
console.log(typeof arr[1].move) // function
将您的代码更改为:
while (steps <= 20) {
if (typeof arrayObject[i].move === "function") {
steps += arrayObject[i].move();
turns++;
} else if (typeof arrayObject[i].move === "number")
steps += arrayObject[i].move;
turns++
TA贡献1799条经验 获得超8个赞
typeof为您提供一个字符串,因此您需要使用"". 还要比较move属性而不是对象本身。
您可以根据自己的目的使用三元运算符,并且可以拥有更优雅的代码。
while (steps <= 20) {
steps += typeof arrayObject[i].move === "function" ? arrayObject[i].move() : arrayObject[i].move;
turns++;
}
TA贡献1827条经验 获得超8个赞
1.typeof
返回一个字符串值,需要与 JavaScript 类型的字符串进行比较。
2. 你应该测试move
单个项目的属性arrayObject
是否是一个函数,而不是arrayObject
它本身:
typeof arrayObject[i].move == 'function'
添加回答
举报