提升变量和函数参数?
Hoisting variables and functions parameters?
考虑以下示例:
function a(a){
console.log(a);
function a(){}
var a=7;
console.log(a);
}
a(10)
那为什么第一次打印的是一个函数而不是10;
函数声明在编译时本身被解析,声明被移动到函数的顶部,像这样
function a(a) {
var a = function a() {};
console.log(a);
a = 7;
console.log(a);
}
a(10)
这就是为什么您在第一个 console.log
中得到 [Function: a]
或类似的东西。当行 a = 7;
被执行时,a
被赋值为 7
。这就是为什么第二个 console.log
打印 7
.
考虑以下示例:
function a(a){
console.log(a);
function a(){}
var a=7;
console.log(a);
}
a(10)
那为什么第一次打印的是一个函数而不是10;
函数声明在编译时本身被解析,声明被移动到函数的顶部,像这样
function a(a) {
var a = function a() {};
console.log(a);
a = 7;
console.log(a);
}
a(10)
这就是为什么您在第一个 console.log
中得到 [Function: a]
或类似的东西。当行 a = 7;
被执行时,a
被赋值为 7
。这就是为什么第二个 console.log
打印 7
.