當前位置:菜譜大全網 - 孕婦食譜 - Javascript變量問題(2)當全局(first)和局部(last) * * *存儲在壹個函數中時,示例如下:

Javascript變量問題(2)當全局(first)和局部(last) * * *存儲在壹個函數中時,示例如下:

發表拙見,錯誤在所難免,請指正。^_^!!!

對於js

它們在執行前對函數外的變量(全局變量)都有同等的權限,即初始全局變量在它們體內是相同的(如果函數使用全局變量的話);

只有當函數被執行時,才能修改變量的值(局部的和全局的),而在其他地方,包括其他父函數,都不能修改變量的值;;

雖然壹個函數是在另壹個函數中調用的,但是如果另壹個函數沒有通過這個函數的參數把修改後的變量傳遞給它,那麽它仍然是靜態的,會保持其體內的全局變量不變。

////////

分析妳的“自己的分析”思維:

a在js中是否被var定義,在函數外是壹樣的。只有在函數體中,var a才會與無var不同,在函數體中添加var不會修改全局A..

在我看來,(4)應該是“1.4”。A at (1)絕對是全局變量,毫無疑問!

根據前面的分析,妳的問題說明A at (1)是壹個全局變量。因為全局變量就是這麽寫的(不用寫var),為什麽(4)處的提示是“1.4”因為壹開始並沒有執行所有的函數,都是直接使用全局變量,也就是a = 1;所有功能的執行順序是:

alert(a+" . 3 ");//1.3

UC();// 2.1 , 3.2

DC();//1.4,因為uc沒有通過參數修改dc內部的變量A,所以內部A還是=1。

補充:謝謝指出錯誤。這真的不是傳遞參數的問題。

智飛川很專業,要準確。傳遞參數仍然只是函數對全局變量的引用,說明不了什麽。我還發現,如果在函數體中使用了var a,那麽A是用在var之前還是之後,都是這個函數的局部變量。即這個A不是另壹個A,這和智飛川的理論是壹致的。比如去掉(2)中的var,那麽在dc()後面加上“var a = ' 4 '”;DC();“有壹個有趣的現象。