Javascript函数的执行范围
Javascript function execution scope
在Javascript中,据说函数是使用定义函数时有效的作用域执行的。它与函数被调用时的作用域无关。
这到底是什么意思?谁能举个简单的例子解释一下?
下面的输出是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>
// 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
相关文章:
- 构造函数函数中的自执行函数的OO上下文/范围
- 当超出范围时,延迟执行脚本Jquery(或SetTimeOut)BUT
- webpack在全局范围内执行模块
- 隔离范围-仅在指令范围内定义的值必须执行更改
- 在全局范围内执行文件,而不是返回导出的对象
- 循环超出范围,不执行承诺链
- 在哪些范围内执行剑道模板
- JavaScript 范围和执行上下文
- 在 AngularJS 中执行作用域函数内的服务后,范围变量不会更新
- 如何在单击按钮时检查多个范围滑块的值,然后根据值执行某些操作
- D3 onClick 处理程序在执行时似乎具有错误的范围
- 范围更改不会;t执行指令中的代码
- 未捕获范围错误:超出最大调用堆栈大小(执行背景颜色切换器功能时)
- Firefox控制台错误:试图在清除的范围内运行编译并执行脚本
- 包含函数的对象文字表示法的执行速度是否比(全局范围)普通函数(取消引用)更快
- 如何在javascript中执行intheContext,以便更改范围
- 未能执行'postMessage'在'敬业员工全球范围':索引0处的值没有可转移类型
- 我怎么能得到注入javascript代码在iframe的局部范围内执行
- 术语执行上下文和范围之间是否有区别?
- 在哪个范围内执行来自JQuery JSONP Ajax请求的回调?