js变量提高

函数和变量的声明老是会被解析器悄悄地被“提高”到方法体的最顶部bash

为了更好的理解变量提高咱们看一段代码:函数

console.log(a);
var a = 2;
复制代码

控制台输出的是undefined,为何控制台没有报错而是输出undefined?spa

由于解析器会在函数开头处自动去声明局部变量,局部变量都会被放在函数的入口处定义,因此上面的代码实际会被解释成下面的代码:code

var a;
console.log(a);
var a = 2;
复制代码

函数声明也会提高的,可是函数表达式就不会提高,好比:cdn

fn1();
function fn1() {
	console.log('我是函数fn1');
}


fn2();
var fn2 = function() {
	console.log('我是函数fn2');
}

复制代码

控制台打印出以下:blog

综上所述:在Javascript中,变量的声明会被提高,而变量的赋值则不会。而函数的声明是函数的声明与函数体一块儿提高ip

相关文章
相关标签/搜索