回答
它不起作用,因爲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. 語言問題
- 3. 幾個C#語言問題
- 4. OpenCart語言問題
- 5. HTML語言問題
- 6. Wordpress問題語言
- 7. c語言問題
- 8. pChart - 語言問題
- 9. 一些通用的C語言問題
- 10. 有關Python語言的一般問題
- 11. 多語言的PHP問題
- 12. 字母的語言問題
- 13. CodeIgniter語言的問題
- 14. 的Joomla 1.6語言問題
- 15. IE的語言問題
- 16. 一些x86彙編語言問題
- 17. Javascript語言模型視圖演示設計「這個」問題
- 18. 與俄語語言的PHP問題
- 19. Codeigniter日曆語言問題
- 20. 切換多語言問題
- 21. Wordpress網站語言問題
- 22. picoLisp語言:onOff問題
- 23. texstudio語言工具問題
- 24. NSDate語言環境問題
- 25. Android語言環境問題
- 26. 跨語言開發問題
- 27. c語言數組問題
- 28. 多語言網站問題
- 29. 彙編X86語言問題
- 30. C#語言問題:匹配
謝謝你的回覆。 :) – weilou 2011-01-24 11:05:31