js中的变量提升

ES6中为何要提出用let和const来定义变量?使用var会有什么弊端呢?其中最关键的就是:使用var关键字声明的变量,无论其实际声明位置在何处,都会被视为声明于所在函数的顶部(如果声明不在任意函数内部,则视为在全局作用域的顶部)。这就是所谓的变量提升。

栗子如下:

function getValue(condition){
    if(condition){
        var value = 'blue';
        return value;
    }else{
        return null;
    }
}

实际上当condition为false或者true时候value都被创建。在else的语句中value的值也是可以被访问的,是undefined。

ES6中引入块级声明:目的就是防止这种变量提升的现象。让声明的变量在指定的块级的作用域外无法被访问。创建形式如下:

1,在一个函数内部

2,由一对花括号包裹的代码块内部 

function getValue(condition){
    if(condition){
        let value = 'blue';
        return value;
    }else{
        return null;
    }
}

猜你喜欢

转载自www.cnblogs.com/tangjiao/p/9163826.html