JS 变量提升与函数提升

JS 变量提升与函数提升

JS变量提升

变量提升是指:使用var声明变量时,JS会将变量提升到所处作用域的顶部。举个简单的例子:

示例1

console.log(foo); // undefined
var foo = 'JavaScript';
// 输出 undefined

上面的例子中,在声明变量foo之前打印这个变量,输出了undefined而没有报错。

这样的现象在函数中同样存在:

示例2

function example(){
    console.log(foo);
    var foo = 'Hello JavaScript'
}

example(); // 输出:undefined

事实上,上面的代码等价于:

function example(){
    var foo;
    console.log(foo);
    foo = 'Hello JavaScript'
}

example(); // 输出:undefined
注意:使用let、const声明变量不会存在变量提升

JS函数提升

函数提升是指使用函数声明创建函数时,把整个函数声明提升到作用域的顶部的现象。
看下面的例子:

typeof foo; // function
typeof bar; // undefined


// 使用函数声明创建函数
function foo(){
    console.log('JavaScript');
}

// 使用函数表达式创建函数
var bar = function(){
    conosle.log('ECMAScript');
}

上面的例子中,使用函数表达式创建的函数bar出现了变量提升;使用函数声明创建的函数foo出现了函数提升。

EC前端 – JS 变量提升与函数提升

posted on 2019-03-07 13:13 FE与哲学波 阅读() 评论() 编辑 收藏

版权声明:本文为feandbo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/feandbo/p/10488988.html