【发布时间】:2015-02-12 16:33:32
【问题描述】:
我认为下面的 JavaScript 会导致obj.fn在entryPoint(). 的上下文中运行
但是当obj.fn()runs 时,会引发'locVar is undefined'exception。
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()不知道在这两种情况下调用它的上下文,而不仅仅是一个?
【问题讨论】:
-
Javascript 是词法(或“静态”)范围的语言,您正在寻找的是“动态”范围。有些语言支持它,但 Javascript 不支持。
标签: javascript internet-explorer jscript