我们先来看看这段代码的输出结果。
console.log(a);
var a = 1;
console.log(a);
function a() {
console.log(2)
}
console.log(a);
function a() {
console.log(3)
}
答案如下,这是为什么呢??
原理如下
以上代码等同于
var a;
function a() {
console.log(2)
}
function a() {
console.log(3)
}
console.log(a); // a()
a = 1;
console.log(a); //1
console.log(a); //1
或者更仔细的写法
var a;
var a = function() {
console.log(2)
}
var a = function() {
console.log(3)
}
console.log(a); // a()
a = 1;
console.log(a); //1
console.log(a); //1
下面还有以下例子
// 代码段1
function foo() {
var a = 1;
function a() {}
console.log(a);
}
foo();
// 代码段2
function foo() {
var a;
function a() {}
console.log(a);
}
foo();
会输出什么呢?
答案是
1 , function a() {}
相当于
function foo() {
var a;
function a() {}
a = 1;
console.log(a);
}
foo();
function foo() {
var a;
function a() {}
console.log(a);
}
foo();
©2018-2020 hongshali.com 版权所有 ICP证:闽ICP备18029655号-1