问题描述

uniapp H5开发中在读取某个数组的长度时出现如下错误:[system] TypeError: Cannot read property ‘length’ of undefined
在这里插入图片描述

这并不会影响到对移动端H5项目的开发。

解决问题

模拟出现错误的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script>
export default{
data(){
return{
taskInfo:''
}
},
onLoad(){
this.post("goodsinfo.json", data).then(res => {
this.taskInfo = res.data;
});
},
methods:{
getLength(){
console.log(this.taskInfo.goodslist.length); // 触发事件后 控制台就会出现如上错误。
}
}
}
</script>

处理的方法:添加一个判断

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script>
export default{
data(){
return{
taskInfo:''
}
},
onLoad(){
this.post("goodsinfo.json", data).then(res => {
this.taskInfo = res.data;
});
},
methods:{
getLength(){
if(this.taskInfo.goodslist != null){
console.log(this.taskInfo.goodslist.length); // 触发事件后 控制台就不在出现错误提示。
}
}
}
}
</script>

如果这个数组本身就是自己声明的变量也不会出现类似的错误提示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script>
export default{
data(){
return{
taskInfo:'',
list:[]
}
},
onLoad(){
this.post("goodsinfo.json", data).then(res => {
this.taskInfo = res.data;
});
},
methods:{
getLength(){
let goodslist = []
console.log(goodslist.length); // 触发事件后 不在出现错误提示。
console.log(list.length); // 也不会出现错误提示
}
}
}
</script>