Javascript 函数和返回语句
我希望此函数(为了示例而减少)能够顺利运行,但由于未定义fn2,它会失败:Javascript 函数和返回语句,javascript,scope,hoisting,Javascript,Scope,Hoisting,我希望此函数(为了示例而减少)能够顺利运行,但由于未定义fn2,它会失败: void function(){ var var1 = fn1(); var var2 = fn2(); function fn1(){}; return function fn2(){}; }(); return语句如何从提升中排除fn2的函数表达式?仅提升使用函数声明创建的函数。返回函数fn2(){}中的函数是使用(命名)函数表达式创建的,因此不会被提升 函数的求值方式取决于上下
void function(){
var var1 = fn1();
var var2 = fn2();
function fn1(){};
return function fn2(){};
}();
return语句如何从提升中排除
fn2
的函数表达式?仅提升使用函数声明创建的函数。返回函数fn2(){}中的函数代码>是使用(命名)函数表达式创建的,因此不会被提升
函数的求值方式取决于上下文。语句(如return语句)中的任何函数都被解析为函数表达式。另一个例子是在中使用括号:括号充当分组运算符,确保括号的内容作为表达式进行计算
在Kangax的优秀文章中可以找到很多关于这方面的信息:
仅提升使用函数声明创建的函数。返回函数fn2(){}中的函数代码>是使用(命名)函数表达式创建的,因此不会被提升
函数的求值方式取决于上下文。语句(如return语句)中的任何函数都被解析为函数表达式。另一个例子是在中使用括号:括号充当分组运算符,确保括号的内容作为表达式进行计算
在Kangax的优秀文章中可以找到很多关于这方面的信息: