函数调用上下文
Function-calling Context
我认为下面的JavaScript会导致obj.fn
在entryPoint().
的上下文中运行
但是当obj.fn()
运行时,会引发'locVar is undefined'
异常。
function entryPoint () {
var locVar = "xxx";
var obj = {};
PassRcvr(obj);
obj.fn();
}
function PassRcvr(passedObj) { // Being an object, the arg is passed by reference.
passedObj.fn = function () {
alert(locVar);
}
}
然而,下面的JScript运行时确实注意到locVar.
function entryPoint () {
var locVar = "xxx";
var obj = {};
PassRcvr(obj);
obj.fn();
function PassRcvr(passedObj) {
passedObj.fn = function () {
alert(locVar);
}
}
}
为什么obj.fn()
不知道在这两种情况下调用它的上下文,而不仅仅是其中一种?
上下文是this
的值。你没有使用它,所以它与你的问题无关。
未传递作用域。函数保持其声明的范围(这就是为什么我们可以在JS中使用闭包)。由于在第一个示例中PassRcvr
没有在entryPoint
内部定义,因此它无法访问作用域为entryPoint
的变量。
在第一种情况下,PassRcvr
位于全局范围内,而locVar
位于entryPoint
函数的本地范围内,这就是为什么无法访问它。
在第二种情况下,CCD_ 14和CCD_。
相关文章:
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 如何在Javascript函数调用中循环变量
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 如何远程检查JavaScript应用程序的函数调用堆栈
- javascript函数调用不起作用
- 为什么这个函数调用会破坏程序并导致未定义的变量
- 如何通过函数调用设置图像的src
- 从全局函数调用Ember控制器上的方法
- 为什么Jquery$.ajax在函数调用中触发所有statusCode,即使调用成功
- JavaScript函数调用(arg1)(arg2)
- 打印链接时,将javascript函数调用到链接中
- 在函数调用中封装数据除了隐藏数据之外还有什么优点
- 无法从JavaScript中的函数调用对象属性
- 函数调用上下文
- 在 JS 函数调用链中丢失上下文
- Javascript函数调用上下文
- 顺序函数调用的执行上下文-这将更改为窗口
- 我如何避免nodejs虚拟机脚本函数调用失去上下文时,调用的函数本身是在上下文中
- 如何保护在不同上下文下调用的函数不被破坏