JS 变量提高与函数提高

JS 变量提高与函数提高

JS变量提高

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

示例1

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

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

这样的现象在函数中一样存在:前端

示例2

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

example(); // 输出:undefined

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

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出现了函数提高。code

EC前端 - JS 变量提高与函数提高htm

相关文章
相关标签/搜索