变量提升
变量提升
变量提升不是好事,现在一般都使用let
1.直接console.log(x)
报错x未定义

2.在后面加let

初始化前不能使用
相当于在块级内 把变量的申明提到最前
注意 var 可以提升变量 let 不提升变量
3.在后面加var

变量同名覆盖
var 定义的同名变量,
后面的会覆盖前面的值,而且JS不会报任何错误
使用let,同名的话会报错
let y =123
let y =456

function变量提升
function 在后面定义的时候他也会提升到顶部
题目:
console.log(v1);
var v1 = 100;
function foo() {
console.log(v1);
var v1 = 200;
console.log(v1);
}
foo();
console.log(v1);
结果:

实际的顺序是,注意var 会覆盖
var v2;
var foo;
foo = function(){
var v2
console.log(v2);//2 undefined
v2 =200;
console.log(v2);//3 200
}
console.log(v2);//1 undefined
v2 =100 ;
foo()
console.log(v2);//4 100pu

浙公网安备 33010602011771号