第一章 块级绑定(深入理解ES6)

一、var声明与变量提升

使用var关键字声明的变量,无论其实际声明位置在何处,都会被视为声明于所在函数的顶 部(如果声明不在任意函数内,则视为在全局作用域的顶部)
let 声明的语法与 var 的语法一致,但会将变量的作用域限制在当前代码块中。上代码

	// var变量提升
	if(false){
		var value = 40 
	}
	console.log(value) // undefined
	// 上面的代码经过JS引擎在后台的调整,实际上像这样
	// var value 
	// if(false){
	//	 value = 40 
	// }
	// console.log(value)

	
	if(false){
		let value2 = 40 
	}
	console.log(value2) // 报错value2 is not defined

使用 const 声明的变量会被认为是常量,并且与 let 声明一样,都是块级声明。

// 有效的常量
const maxItems = 30

// 语法错误:未进行初始化
const name

if(condition){
	const max = 5
}

// max 在此处无法访问

基本的懂了来点复杂的

	var funcs = []; 
	for (var i = 0; i < 10; i++) { 
		funcs.push(function() { 
			console.log(i); 
		}); 
	}
	funcs.forEach(function(func){
		func() // 输出数值"10"十次
	})
	
	// 如果吧for循环中var变成let
	var funcs = []; 
	for (let i = 0; i < 10; i++) { 
		funcs.push(function() { 
			console.log(i); 
		}); 
	}
	funcs.forEach(function(func){
		func() // 输出数值从0到9依次输出
	})

需要重点了解的是: let 声明在循环内部的行为是在规范中特别定义的,而与不提升变 量声明的特征没有必然联系。事实上,在早期 let 的实现中并没有这种行为,它是后来 才添加的。

总结

以上的内容是通过阅读深入理解ES6摘出来的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静的小白菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值