看代码输出:
var a = 1;
function fn(){
var a = 2;
function a(){console.log(3);}
return a;
function a(){console.log(4);}
}
var b = fn();
console.log(b);
输出:2
知识点:
- var 定义的变量以及function 定义的函数都会被提升,并且函数的优先级高于变量。
- 所以上述代码执行顺序为:
var a = 1; function fn() { function a() { console.log(3); } function a() { console.log(4); } var a = 2; return a; } var b = fn(); console.log(b); // 2 - 由于函数内部的a使用var声明了,是局部变量,跟外边的全局变量a作用域不同,所以互不影响,因此输出
2