if语句- javascript函数中的意外类型错误
if statement - Unexpected TypeError in a javascript function
目标:编写一个函数,确定一个对象数组是否包含一个给定字段的给定值的对象。如果存在该对象则返回该对象,否则返回false。
var data = [
{isle: 'VF', item: 'Ginger'},
{isle: 'VF', item: 'Spinach'},
{isle: 'Dairy', item: 'Milk'},
{isle: 'Dairy', item: 'Yogurt'}
];
var objwithPropvalueInarr = function(propname, propvalue, arr){
for(var i=0; i <= arr.length; i++){
if (arr[i][propname] === propvalue) {
// console.log('Found object with value ' + propvalue);
return arr[i];
}
};
return false;
};
我在Google Chrome控制台输入了上面的代码。下面的函数调用可以工作:
objwithPropvalueInarr('isle', 'VF', data)
上面一行按照预期返回data[0]
。
objwithPropvalueInarr('isle', 'nonexistentpropvalue', data)
TypeError: Cannot read property 'isle' of undefined
arguments: Array[2]
get message: function () { [native code] }
get stack: function () { [native code] }
set message: function () { [native code] }
set stack: function () { [native code] }
type: "non_object_property_load"
__proto__: Error
data[0]['isle'] === 'nonexistentpropvalue'
按预期返回false
。函数中的if
条件不应该每次检查都返回false
,然后在最后返回false
值。如果有人能解释一下这个错误,我将不胜感激。
谢谢。
变化
for(var i = 0; i <= arr.length; i++) {
for (var i = 0; i < arr.length; i++) {
使用<=
将超出数组的边界。
jsFiddle演示
这是因为您应该将代码更改为for(var i=0; i < arr.length; i++){
:因为数组长度= arr。长度,最后一个元素索引是arr。长度- 1,得到arr[arr]
相关文章:
- 分析高度属性时出现意外值{{specs.height}}.index.html
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 如何在DOM元素上按类型构建此函数
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- "未捕获类型错误/丢弃意外“;因为一句台词而出现?(HTML w/<脚本>)
- ES6 类扩展本机类型使实例在某些 JavaScript 引擎中出现意外行为
- 创建javascript子类型的实例会产生意外行为
- jQuery模块函数意外返回'未捕获的类型错误'
- 从内部HTML更改为表单时获得意外结果,输入类型文本字段
- 意外的类型错误 - Javascript,多维数组
- svg-import.js导入错误“SVG导入得到意外的类型sodipodi:namedview”
- 意外的性能.导航.类型 onbeforeunload
- 运行 AJAX 异步时文档类型标记的“意外输入结束”,但在同步时则不然
- jQuery ajax 返回意外的数据类型
- jquery在DOM中返回了Kendo网格的意外类型
- FOR类型循环中的大括号,意外地更改了代码的结果
- 未捕获的语法错误:类型日期的数字意外
- 未捕获的类型错误 - 意外行为
- 使用Jasmine测试隔离作用域时意外的变量类型
- if语句- javascript函数中的意外类型错误