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. Javascript函數調用範圍
- 5. Javascript函數範圍問題
- 6. Javascript回調函數範圍?
- 7. javascript中的函數範圍
- 8. JavaScript函數執行
- 9. javascript函數執行
- 10. 執行javascript函數?
- 11. JavaScript行爲範圍
- 12. 如何使用父範圍中的參數執行函數?
- 13. javascript函數範圍,變量聲明
- 14. Javascript範圍內的匿名函數
- 15. JavaScript的嵌套函數原型範圍
- 16. JavaScript範圍和函數調用
- 17. javascript函數範圍和覆蓋
- 18. Javascript成員函數超出範圍
- 19. JavaScript函數中的範圍變量
- 20. 變量和函數範圍在javascript
- 21. javascript setTimeout函數超出範圍
- 22. 角度發送$範圍到JavaScript函數
- 23. 另一個javascript函數範圍問題
- 24. JavaScript對象是函數的範圍
- 25. JavaScript的匿名函數範圍
- 26. Ajax函數內的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