美文网首页
var声明及变量提升

var声明及变量提升

作者: 藕藕藕汀 | 来源:发表于2018-06-08 14:57 被阅读5次
提升机制(Hoisting):

      js引擎的工作方式是,先解析代码,然后再一行一行的运行,这就造成,在函数作用域或全局作用域中通过var声明的变量,无论在哪里声明的,都会被当做在当前作用域顶部声明的变量。

function hoistingTest(val){
    if(val){
        var strValue = "Yana";
    }else{
        console.log(strValue);//undefined,此处可以访问变量,其值为undefined
    }
    console.log(strValue);//undefined,此处可以访问变量,其值为undefined
}
hoistingTest(false);

      所以并不是在val值为true的时候才会创建变量。事实上,在预编译阶段,JavaScript引擎会将上面的hoistingTest函数修改成:

function hoistingTest(val){

    var strValue;

    if(val){
        strValue = "Yana";
    }else{
        console.log(strValue);
    }
    console.log(strValue);
}
hoistingTest();

      变量strValue被提升至函数顶部,这样else子句中也可以访问到该变量,并且由于strValue还没被初始化,所以值是undefined。

相关文章

  • var声明及变量提升

    提升机制(Hoisting): js引擎的工作方式是,先解析代码,然后再一行一行的运行,这就造成,在函数作用域或全...

  • ES6学习-块级作用域绑定

    var声明及变量提升(Hoisting)机制 在函数作用域通过var声明的变量,无论在哪里声明都会被当成作用域顶部...

  • 《深入理解ES6》读书笔记——1.块级作用域绑定

    1)var声明及变量提升机制 1.概念 提升机制:在函数作用域或全局作用域中,通过var声明的变量,无论实际在哪里...

  • [深入理解ES6]块级绑定

    var声明与变量提升 变量提升(hoisting):使用var关键字声明的变量,无论声明位置在何处,都会被视为声明...

  • ES6之 let,const

    var 声明与变量提升 var是js的变量声明语句,使用var声明的变量,无论其声明的实际语句在何处,都会被提升到...

  • 变量声明 var、let、const

    1. var变量声明提升 var声明的变量,发生变量声明提升;即:变量的声明被提升到该作用域的顶部 let 和 c...

  • var 与let

    1.声明提升 使用var 声明变量,声明会提升到顶部 使用let 声明变量不会提前 在函数内部用var声明变量,只...

  • js中var,let,const的区别

    var声明的变量会挂载在window上,而let,const不会 var声明变量存在声明提升,其他声明方式不提升 ...

  • js中的变量提升、函数提升

    const\ let声明的变量,不会提升,且只能声明一次 1、var a=1 变量声明,只会提升var a 实际执...

  • js变量提升

    变量提升: 使用var声明的变量(包括函数)其声明会被提升到方法体最顶部,而赋值不会被提升;未使用var声明的变量...

网友评论

      本文标题:var声明及变量提升

      本文链接:https://www.haomeiwen.com/subject/qfxnsftx.html