我已經知道關閉的關鍵是關於作用域。但我不知道它的具體執行順序。這JS關閉的語句執行順序是什麼?
關於閉包的「Professional JavaScript for Web Developers 3rd Edition」的經典代碼。
function createFunctions(){
\t var result=new Array();
\t alert('haha');
\t for(var i=0;i<10;i++){
\t \t result[i]=function(){
\t \t \t alert(i);
\t \t \t return i;
\t \t };
\t }
\t return result;
}
var a=createFunctions();
令我驚訝的是,「哈哈」被驚動,而沒有「我」是alerted.I只是將功能分配到變量a.Why聲明「警報(‘哈哈’ )「在循環未執行時被警告?
當我添加下面的代碼,
var a=createFunctions();
alert(a[2]);
why it alerted like this
function(){
\t \t \t return i;
\t \t }
不喜歡
function(){
\t \t return 2;
\t \t }
而且當我添加下面的代碼,會是怎樣執行特別是在循環語句語句的順序。
var a=createFunctions();
alert(a[2]());
爲什麼要提醒我呢?你永遠不會調用這些函數。此外,陣列中的所有功能在運行時都會提醒您10 ... – Teemu
這本書很古老。我建議你找到一個更新的。 –