1
A
回答
2
以下的輸出是A,因爲foo
是在function a
範圍限定,以便它使用可變data
是也是在function a
範圍所限定的一個。
它不輸出B,即使功能是,在function b
的範圍內調用,其中data = "B"
。
<div id="output"></div>
<script>
var data = "global";
function a() {
var data = "A";
function foo() {
document.getElementById('output').innerHTML = data;
}
return foo;
}
function b() {
var data = "B";
var func = a();
func();
}
b();
</script>
0
// Global variables are on every scope chain
var global = 'global'
// Function variables are only on a function's scope chain
function bar() {
var fn = 'fn';
// foo called from here where fn is avaialble as a local variable
foo(); // undefined
return function() {
alert(fn)
}
}
function foo() {
// foo can access global because it's on its scope chain
alert(global);
// Can't access fn because it's on bar's scope chain
// so returns undefined
alert(typeof fn);
}
// the function returned by bar has access to fn
var f = bar(); // global
f(); // fn
相關問題
- 1. Javascript函數範圍
- 2. Javascript函數範圍
- 3. javascript函數範圍
- 4. 多次執行角度範圍函數
- 5. javascript自動執行函數和範圍確定
- 6. JavaScript函數級範圍
- 7. Javascript函數級範圍
- 8. JavaScript函數指針範圍
- 9. Javascript函數範圍問題
- 10. 瞭解JavaScript函數範圍
- 11. Javascript函數調用範圍
- 12. javascript中的函數範圍
- 13. JavaScript函數範圍問題
- 14. 範圍與JavaScript函數
- 15. Javascript回調函數範圍?
- 16. JavaScript條件執行和可變範圍
- 17. JavaScript範圍和執行上下文
- 18. javascript沒有範圍函數參數
- 19. 執行javascript函數?
- 20. javascript函數執行
- 21. javascript函數執行
- 22. JavaScript函數執行
- 23. JavaScript函數執行
- 24. JavaScript行爲範圍
- 25. 如何使用父範圍中的參數執行函數?
- 26. 當範圍函數發生Javascript範圍問題
- 27. 測試範圍在JavaScript中的函數的範圍內的虛擬範圍
- 28. JavaScript調用函數和範圍
- 29. JavaScript對象是函數的範圍
- 30. Javascript範圍內的匿名函數
可能這個鏈接可以幫助http://stackoverflow.com/questions/111102/how-do-javascript-closures-work – rab 2013-03-15 12:31:01