我正在客户端监听一个自定义事件,其中作为“自定义事件”的一部分发出的值“ movieArr”在“ movieArr1”引用的全局范围内不可用。为什么'movieArr1'仍会打印未定义,而movieArr会打印正确的值?
let movieArr1=[];
socket.on('sendMovieList',function(movieArr) {
console.log('received movielist2'+movieArr.length+':'+Array.isArray(movieArr));
movieArr1=movieArr;
});
console.log(movieArr1);
答案 0 :(得分:0)
您的代码应类似于:
var movieArr1=[];
socket.on('sendMovieList',function(movieArr) {
console.log('received movielist2'+movieArr.length+':'+Array.isArray(movieArr));
movieArr1.push(movieArr);
console.log(movieArr1)
});
//console.log(movieArr1);
请记住,movieArr
的范围仅限于其功能范围。在其定义的功能范围之外无法访问。
您可以像上面的示例一样将本地值填充为全局值。
此外,如果在事件触发后检查[]
的值,您将可以看到该值反映在全局数组中。
用法应类似于以下工作示例:
let movieArr1=[];
setInterval(function() {
movieArr1.push(123);
console.log(movieArr1.toString());
},2000);