变量提升

变量提升

变量提升不是好事,现在一般都使用let

1.直接console.log(x)

报错x未定义

image-20210714105444947

2.在后面加let

image-20210714105606297

初始化前不能使用

相当于在块级内 把变量的申明提到最前

注意 var 可以提升变量 let 不提升变量

3.在后面加var

image-20210714110225569

变量同名覆盖

var 定义的同名变量,

后面的会覆盖前面的值,而且JS不会报任何错误

使用let,同名的话会报错

let y =123

let y =456

image-20210714110633666

function变量提升

function 在后面定义的时候他也会提升到顶部

题目:

   console.log(v1);
        var v1 = 100;
        function foo() {
            console.log(v1);
            var v1 = 200;
            console.log(v1);
        }
        foo();
        console.log(v1);

结果:

image-20210714112535700

实际的顺序是,注意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
posted @ 2021-07-14 14:06  zcbj588  阅读(105)  评论(0)    收藏  举报