变量提升和函数提升

  • 时间:
  • 来源:互联网
  • 文章标签:

1.变量声明提升:
通过var 定义(声明)的变量,在定义语句之前就可以访问到。
值:undefined

console.log(a);  	//undefined
var a = 23;
console.log(a);  	//23

上面代码等价于:

var a ;				//预编译,将变量声明提升至当前作用域的顶端,初始值为undefined
console.log(a);		//变量a通var进行了定义却没有赋值,所以控制台输出undefined
a = 23;
console.log(a);		//将23赋给了变量a,所以控制台输出10

2.函数声明提升
通过function声明的函数,在之前就可以直接调用
值:函数定义(对象)

fn();				//Hello KB
function fn(){
console.log('Hello KB');
}
fn();				//Hello KB

3.名称相同的function函数,后面的将覆盖先写的

fn();					//Hi LBJ

function fn(){
console.log('Hello KB');
}

fn();					//Hi LBJ

function fn(){
console.log('你好 AD')
}

function(){
console.log('Hi LBJ');
}

fn();					//Hi LBJ

4.函数提升的优先级大于变量提升的优先级

console.log(a);			 //ƒ a() {console.log('LBJ')}

function a(){
console.log('LBJ');
}

var a = 23;
console.log(a);			 //23

上面代码等价于:


	var a = function(){
			console.log('LBJ')
		}
		var a;
		console.log(a);    		// f () {console.log('LBJ')}
		
		a = 23;
		console.log(a);  		//  23

总结:

  1. 在代码执行前,解析器会将将变量声明提升到当前作用域的前面,初始值为undefined
  2. 名称相同的function函数,后面的将覆盖先写的
  3. 函数提升的优先级大于变量提升的优先级

本文链接http://www.taodudu.cc/news/show-1781842.html