回答
它不起作用,因爲aaa
不在fn()
的範圍內。你可能會困惑的是,
(function() {
alert(aaa); // 'BBB'
})();
正在工作,但fn()
不是。發生了什麼事情是因爲「BBB」被定義爲和在foo2
內部調用,alert(aaa)
和aaa
在相同的範圍內,並且它工作得很好。
鑑於這種情況,你有兩個選擇:
聲明
aaa
在上部範圍:var aaa = 'BBB'; var fn = function() { return function() { alert(aaa); }; }; var foo2 = function() { (function() { alert(aaa); // 'BBB' })(); fn(); };
通
aaa
作爲參數傳遞給fn()
:var fn = function (aaa) { return function() { alert(aaa); }; }; var foo2 = function() { var aaa = 'BBB'; (function() { alert(aaa); // 'BBB' })(); fn(aaa); };
這裏有一個關於JavaScript的作用域的文章:
http://www.digital-web.com/articles/scope_in_javascript/
我希望這有助於。
我想在fn函數運行時,應該能夠在foo2函數中找到aaa。
不,不應該。 aaa
作爲局部變量在foo2
中聲明,因此在fn
內部無法訪問。是什麼讓你覺得不對?我沒有看到任何編程語言會表現得如此。
它會工作,如果你取消註釋行//var aaa = 'AAA';
,但然後fn
內的警報當然會說「AAA」而不是「BBB」。
謝謝您的回覆。 :) – weilou 2011-01-24 11:04:55
您在foo2
內聲明var aaa
,因此其範圍限制爲foo2
。 fn
無法訪問它。
要麼在兩個函數之外聲明var aaa
,要麼將其作爲參數傳遞給fn
。
謝謝你的回覆。 :) – weilou 2011-01-24 11:06:00
- 1. 一個JavaScript語言的問題
- 2. 幾個C#語言問題
- 3. c語言問題
- 4. HTML語言問題
- 5. OpenCart語言問題
- 6. 一些通用的C語言問題
- 7. 有關Python語言的一般問題
- 8. 字母的語言問題
- 9. 的Joomla 1.6語言問題
- 10. 多語言的PHP問題
- 11. 一些x86彙編語言問題
- 12. 與俄語語言的PHP問題
- 13. 語言翻譯問題
- 14. Sharepoint 2010多語言問題
- 15. texstudio語言工具問題
- 16. picoLisp語言:onOff問題
- 17. 跨語言開發問題
- 18. PHP多語言問題
- 19. Joomla語言包問題
- 20. c語言數組問題
- 21. flash嵌入語言問題
- 22. 彙編X86語言問題
- 23. 序言語法問題
- 24. 問題,用C語言
- 25. Wordpress網站語言問題
- 26. 一個簡單的序言語法問題
- 27. ANTLR /語法問題:計算器語言
- 28. javascript的一個小問題
- 29. JavaScript語法問題
- 30. Javascript語法問題
謝謝你的回覆。 :) – weilou 2011-01-24 11:05:31