当我在with()语句中定义并调用Function时,该函数不会接收with()中定义的对象。有办法解决我的问题吗?
例如,此代码不起作用:
var testObj = { testStr: "Hello World!" };
with(testObj) {
function testFunc(){
alert(testStr);
}
testFunc();
}
答案 0 :(得分:2)
这是一个功能声明。
首先不应在语句块中声明函数。
表达式将起作用:
var testObj = { testStr: "Hello World!" };
with(testObj) {
var testFunc = function(){
alert(testStr);
}
testFunc();
}
答案 1 :(得分:1)
只需使用函数表达式:
var testObj = { testStr: "Hello World!" };
with(testObj) {
var testFunc = function(){
alert(testStr);
};
testFunc();
}
函数声明被提升,因此不起作用。
答案 2 :(得分:0)
看起来它指的是testFunc(),而不是testObj。
var testObj = { testStr: "Hello World!" };
with(testObj) {
function testFunc(){
alert(this == testObj);
}
testFunc();
}
答案 3 :(得分:0)
只是不要使用with
(1):
var testObj = { testStr: "Hello World!" };
(function() {
alert(testObj.testStr);
}())