一丝一竹

导航

 

1.变量声明提前:

console.log(n); //undefined
var n=10;
console.log(n); //10


2.函数声明提前:

function fun(){console.log(1)}
fun(); //2
function fun(){console.log(2)}
fun(); //2

  解决方案:

相当于给fun赋值,hoist后面应该就是只有var fun;

3.综合示例:

修改前:

var n=10;
function fn(){
console.log(n); //undefined
var n=100;
console.log(n); //100
}
fn();
console.log(n); //10

修改后:
var n=10;
function fn(){
console.log(n); //10
/*var*/ n=100;
console.log(n); //100
}
fn();
console.log(n); //100

解决方案:
var n=10;
function fn(){
console.log(n); //报错
/*var*/let n=100; //用let代替var,目的是禁止在let前使用该变量
console.log(n);
}
fn();
console.log(n);

posted on 2018-01-12 17:48  一丝一竹  阅读(112)  评论(0编辑  收藏  举报