在下面的javascript代码中,为什么使用func函数无法访问的变量?
结果:在下面的javascript代码中,为什么使用func函数无法访问的变量?,javascript,function,scope,Javascript,Function,Scope,结果: 未捕获引用错误:未定义的,仅存在于foo中,因为它是在那里声明的。您的func函数在foo之外,因此that变量不存在 如果希望能够在两个位置访问它,可以在两个函数之外声明它: var func=function(){console.log(that)} var obj = { foo(){ var that=this; var a=func; a(); } } obj.foo(); var; var func=f
未捕获引用错误:未定义的
,
仅存在于foo
中,因为它是在那里声明的。您的func
函数在foo
之外,因此that
变量不存在
如果希望能够在两个位置访问它,可以在两个函数之外声明它:
var func=function(){console.log(that)}
var obj = {
foo(){
var that=this;
var a=func;
a();
}
}
obj.foo();
var;
var func=function(){console.log(that)}
var obj={
foo(){
this=this;//因为JavaScript使用词法作用域,而不是动态作用域。这意味着在运行时不会在调用作用域中查找变量。只有源代码的嵌套结构才重要。在func
中没有对的引用。要么将其声明为全局变量,要么将其传递给s是func
的一个参数
选项1:将作为参数传递
var func=函数(该函数){
console.log(那个)
}
var obj={
foo(){
var=这个;
var a=func(该值);
//像这样调用函数;
A.
}
}
obj.foo();
说变量a只是引用了函数是否合适?
var that;
var func=function(){console.log(that)}
var obj = {
foo(){
that=this; // <-- no var
var a=func;
a();
}
}
obj.foo();