变量提升与函数声明提升

变量提升与函数声明提升

变量提升

使用var 声明的变量会进行变量提升。变量提升的作用域是整个函数,也就是说,var声明的变量会被提升到所在作用域的最顶端。

// 变量提升
function f (){
	console.log(y)  // undefined
	var y = 1; 
}
f();	
console.log(y); // 报错:y is not defined
// 变量提升
var i =5;
function f() {
	console.log(i); // undefined
	if (false) {
		var i = 10;
	}
}	 
f()
// 变量提升
var i =5;
function f() {
	console.log(i); // 5
	function fn() {
		var i = 10; 
	}
}	 
f();

var i = 10 这句代码是在 fn 这个函数的执行环境里,变量声明提升只能到 fn 函数的开头。

函数提升

js中声明函数的三种方式:函数声明函数表达式构造函数

函数声明: 这种方式就是使用 function 声明一个具名函数,特点是可以先使用后声明(函数提升)。

// 函数声明
console.log(f());  // 3
function f() {
	var m = 1, n = 2;
	return m + n;
}

函数表达式:这种方式是把一个匿名函数赋给一个变量,必须先声明后使用。

// 函数表达式
console.log(one()); // 报错:one is not a function
var one = function () {
	var m = 1, n = 2;
	console.log(m + n);
}

遇到函数声明会将整个函数声明提升,而函数表达式只是提升一个函数名,里面的内容并没有提升。

当函数声明和函数表达式同时存在时,会优先提升函数声明。

console.log(one()); // 7
var one = function () {
	var i = 2, j = 3;
	return i + j;
}
function one() {
	var i = 3, j = 4;
	return i + j;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值