亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這個結果為什么全都是16而不是全都是9 i<=3應該 3*3等于9啊 我很不解

這個結果為什么全都是16而不是全都是9 i<=3應該 3*3等于9啊 我很不解

名淵 2017-09-20 23:51:32
function count() { ? ?var arrs = []; ? ?for(var i = 1;i<=3;i++){ ? ? ? ?arrs.push(function () { ? ? ? ? ? ?return i * i; ? ? ? ?}); ? ?} ? ?return arrs;}var result = count();var fire1 = result[0];var fire2 = result[1];var fire3 = result[2];console.log(fire1());console.log(fire2());console.log(fire3());
查看完整描述

3 回答

已采納
?
夜舞暗瀾

TA貢獻19條經驗 獲得超7個贊

arr.push()的參數為function類型。

當輸出 result=[ function(){ return i * i },?function(){ return i * i },?function(){ return i * i } ]時,result的 i 默默地循環了三遍,停在了 i=4 上。

然后當你使用 result[0]() 時,將i=4帶入function,得到16。

循環會在設置好時調用,不會等著你,但是function只會在調用時調用。


查看完整回答
反對 回復 2017-09-21
?
慕瓜2309318

TA貢獻5條經驗 獲得超1個贊

function count() {

? var arrs = [];

? for(var i = 1;i<=3;i++){

? ? ? arrs.push(i * i); //此處代碼修改

? }

? return arrs;

}

var result = count();


var fire1 = result[0];

var fire2 = result[1];

var fire3 = result[2];


console.log(fire1);//此處代碼修改

console.log(fire2);//此處代碼修改

console.log(fire3);//此處代碼修改


你的代碼中,count() 方法中,arrs是你獲得的 一個含有方法的的集合,i最后的值為4,把前面的值都給覆蓋掉了


查看完整回答
反對 回復 2017-09-21
?
橋本奈奈未

TA貢獻436條經驗 獲得超108個贊

最后一次i++變成4但沒有進入循環

查看完整回答
反對 回復 2017-09-21
  • 名淵
    名淵
    為什么最后i++會變成4 但沒有進入循環 能不能說的清楚點 到底為什么?
  • 橋本奈奈未
    橋本奈奈未
    你自己寫的i<=3才條件才成立啊那i不是要等于4才會退出循環嗎
  • 3 回答
  • 0 關注
  • 2008 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號