閉包的常規缺陷以及唯一一種解決方案

2022-09-03 07:39:07 字數 809 閱讀 1954

function test () 

}return

arr;

}var myarr =test();

for (var j = 0; j < 10; j ++)

首先看for迴圈,迴圈時arr[i]變化為arr[0]-arr[9],但因後面函式並無執行語句執行,所以迴圈10次結果為:arr[0] = function () {}   ====> arr[9] = function () {},「document.write」語句未執行,屬於『看不見』的狀態,只能看到arr陣列的每位都是乙個function,一共有10個,此時i的值已因迴圈變成了10。  然後把arr陣列return儲存到了外部,此後再執行函式,因i的值已為10,執行時終於才讀取到document.write語句,所以列印10,執行10次就列印10個10.

列印0-9的方法:

function test () 

}(i))

}return

arr;

}var myarr =test();

for (var j = 0; j < 10; j ++)

把arr[i] = function () 放到乙個立即執行函式中,該立即執行函式形參為n實參為i,並執行,通過for迴圈會生成10個不同的立即執行函式, 每個立即函式執行後剩下的陣列結果為arr[0] = function() ===>arr[9] =function () ,將陣列儲存到外部,再執行的時候,document.write(n + 「 」) ,n的值就是當前陣列索引arr[ ]括號內的值,是0-9.

搞笑 我是我們村唯一乙個搞IT的!

出自 當我跟村裡人提起我是it工程師時 他們內心是這樣想的 也有的朋友這樣想 爸爸問我,什麼獅?媽媽問我,工什麼?我說,就是客戶執行主任 爸媽說,孩子出息了,都當主任了 別人認為it工程師是這樣 其實一般是這樣 講方案的時候以為自己是這樣 結果客戶在下面這樣 本以為和客戶的關係是這樣的 結果發現其實...

陣列中唯一乙個只出現一次的數字

陣列中除乙個數字只出現一次外,其他數字都出現了三次,請找出這個唯一只出現一次的數字。使用排序的方法,排序後遍歷排序後的陣列。時間複雜度為o nlgn 使用雜湊表,時間複雜為o n 但是需要空間複雜度也為o n 由於每個數字都出現了三次,而同乙個數字每一位上的值都相同,可以分別把所有數字的每一位上的數...

從12個球中找出唯一乙個質量不同的球,並說明輕重

12個球,其中只有乙個質量不同的球。要求使用乙個天平,經過三次稱量,找出這個球。並說明這個球相比於其他球,是重還是輕。將這12個球編號為1 12 14號球分為a1組,58號球分為a2組,9 12號球分為a3組 第一次稱量,取a1組和a2組分別放在天平兩端。存在兩種結果 天平平衡。這說明要找的球位於a...