在下面的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();