ES6基础

1、var\let区别

  var与let都是用来定义变量的,let可以看成为更完美的var,因为let有块级作用域,es5之前if和for都没有块级作用域的概念,所以在很多时候,我们都必须借助function作用域来解决引用外部变量问题。即es5中var没有块级作用域(if、for),es6中let有块级作用域(if、for)
没有块级作用域引起的问题:if的块级(不希望在块级作用域外随意修改块级作用域内变量值)

var func;
if(true){
	var name = 'aaa';
	
	func = function(){
		console.log(name);
	}
}
name = 'bbbb'
func()

没有块级作用域引起的问题:for的块级

<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<button>按钮4</button>
<button>按钮5</button>
<script type="text/javascript">
	var btns = document.getElementsByTagName('button');
	for(var i = 0;i<btns.length;i++){
		btns[i].addEventListener('click',function(){
			console.log('第'+i+'个按钮被点击')
		})
	}
</script>

运行截图:无论点击哪个按钮都会显示第五个按钮被点击,这就是由于没有块级作用域出现的问题。
在这里插入图片描述
解决没有块级作用域引起问题:使用闭包

<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<button>按钮4</button>
<button>按钮5</button>
<script type="text/javascript">
	var btns = document.getElementsByTagName('button');
	for(var i = 0;i<btns.length;i++){
		(function(num){
				btns[i].addEventListener('click',function(){
				console.log('第'+num+'个按钮被点击')
		})
		
		})(i)
	}

运行截图:依次点击按钮
在这里插入图片描述
解决没有块级作用域引起问题:使用let定义变量,有块级作用域

<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<button>按钮4</button>
<button>按钮5</button>
<script type="text/javascript">
	var btns = document.getElementsByTagName('button');
	for(let i = 0;i<btns.length;i++){
		btns[i].addEventListener('click',function(){
			console.log('第'+i+'个按钮被点击')
		})
	}
</script>

运行截图:依次点击按钮
在这里插入图片描述

2、const使用

  const关键字主要作用为将某个变量修饰为常量,不可以再次被赋值。在es6开发中,优先使用const,只有需要改变某一个标识符的时候才使用let。
注意一:一旦const修饰的标识符被赋值之后,不能修改
const name = ‘why’
name = ‘abc’
注意二:在使用const定义标识符时,必须进行赋值
const name;
注意三:常量的含义是指向的对象不能修改,但是可以改变对象内部的属性。
const obj = {
name = ‘why’,
age = ‘18’,
height = 1.88
}
console.log(obj);
obj.name = ‘kobe’,
obj.age = 40,
obj.height = 1.87
console.log(obj);

3、对象字面量增强写法

字面量:一般定义变量:const obj = new Object();简写:const obj = {}其中大括号{}就可以理解为字面量。
一般字面量对象定义方法:
obj = {
name = ‘why’,
run:function(){
console.log(‘在奔跑’);
}
}
属性的增强写法:
const name = ‘why’;
const age = 18;
ES5写法
const obj = {
name :name;
age:age;
}
ES6写法
const obj = {
name,
age,
}
函数的增强写法:
ES5写法
const obj = {
run:function(){
},
eat:function(){
}
}
ES6写法
const obj = {
run(){
},
eat(){
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值