1 回答

TA貢獻1802條經驗 獲得超5個贊
var byteArrayUntil=(function(){
getUseData=function(data,offset){ //敲黑板!??!劃重點!面試必考題! 聲明變量不寫var,就等于 window.getUseData
var arr=[];
for(var i=0;i<=799;i++){
arr.push(i);
}
return arr;
}
getUseJson=function(data,offset){
var arr=[];
for(var i=0;i<=500;i++){
arr.push(i);
}
return {'hz':arr};
}
return this; //這里this是什么呢?是運行的上下文,這是個立即執行函數,是誰執行了它捏?是window,所以這里的this就是window 對象,辣么var byteArrayUntil = 這個return的this,辣么,byteArrayUntil 就指向了window。
})();
console.log(byteArrayUntil.getUseJson()); // 所以,byteArrayUntil.getUseJson() 就等于 window.getUseJson()
同樣道理,下面那個報錯的代碼塊
this依然等于window,this.getUseJson就等于window.getUseJson和上一題一樣
但是,byteArrayUntil在這里啥都不是啊。。因為立即執行函數木有return,它就是個undefined。
so,undefined.getUseJson()必然報錯了。
添加回答
舉報