es6新增关键字、语法解析

 

let的应用

var btns=document.getElementsByTagName('button');
			for(let i=0;i<btns.length;i++){
				btns[i].onclick=function(){
					// btns[i].style.color='red';如果使用的是var 此时会报错 因为var声明的变量是全局变量,循环结束i等于5,而btns下标最大为4
					// this.style.color='red';
					btns[i].style.color='red' 
					// let声明的块级作用域

				}
			}

模板字符串

var stu={
				name:'zs',
				age:12
			}
			txt.innerHTML=`学生的姓名是${stu.name},年龄是${stu.age}`;
2、标签模板,模板字符串不仅仅可以按照上面的这种方式使用。还可以跟在一个函数后面。该函数将被调用来处理这个模板字符串
			// alert(123);
			// alert`123`;
			function add(x,y){
				console.log(x,y);//[ '1 23' ] undefined
				console.log(arguments)//[Arguments] { '0': [ '1 23' ] }
			}
            let a=10;
			let b=2;
			// 如果实参有变量有常量的时候,会自动解析 把常量(用变量隔开的)拼接成一个数组,每一个变量依次拼接到后面
			add`hello${a}welcome${b}${a+b}`
            //[ 'hello', 'welcome', '', '' ] 10
            //[Arguments] { '0': [ 'hello', 'welcome', '', '' ], '1': 10, '2': 2, '3': 12 }

解构:es6中允许按照一定模式,从数组和对象中提取值,按照一定的规则,对变量进行赋值

//数组的解构赋值 按照数组的顺序一一赋值
let [a,b,c]=[1,2,4];
console.log(a,b,c);//1,2,4

// 通过解构可以直接交换值
			let m=12;
			let n='hello';
			// 通过解构可以直接交换值
			[m,n]=[n,m];
			console.log(m,n);//m='hello',n=12
//对象的解构赋值和数组有一个重要的不同,数组的解构是有顺序的,对象的解构没有顺序,由属性来决定
// 变量名字必须与属性名字一致,才能获取到正确的值
let stu={
				name:'zs',
				age:12
			}
			let {age,name,address}=stu;
			// address相当于声明了,没有赋值
			console.log(name,age,address);//zs,12,undefined
// 字符串的解构赋值 把字符串中的字符解析一一赋值。如果有多余的不会报错,只是没有对应变量赋值
let[x,y,z]='hi';
console.log(x,y,z);//h,i,undefined
// 字符串都会有一个长度属性,因此可以使用属性解构赋值
let {length:len}='hello';
console.log(len);//5
// 函数参数的解构赋值,类似于数组的解构赋值
function add([a,b]){
				console.log(a,b)
			}
			add([2,3])//2,3

数组扩展

// forEach只能用来遍历数组,不能用来遍历集合
    // btns类数组/集合 和数组类似
    //var btns=document.getElementsByTagName('button');


            // 会报错
            // btns.forEach(function(item,index,arr){
            //     console.log(item,index,arr)
            // })
// Array.from()可以把类数组/集合转化为数组
    //要将一个类数组对象转换为一个真正的数组,必须具备以下条件:

  //1、该类数组对象必须具有length属性,用于指定数组的长度。如果没有length属性,那么转换后的数
    //组是一个空数组。

  //2、该类数组对象的属性名必须为数值型或字符串型的数字

// array.of()相当于对new Array的扩展。不论输入什么,代表的都是数组元素

        //Array.of(7);       // [7]
        //Array.of(1, 2, 3); // [1, 2, 3]

        //Array(7);          // [ , , , , , , ]
        //Array(1, 2, 3);    // [1, 2, 3]
//数组.find(function(条件){书写具体条件})得到的结果是第一个符合条件的数组元素的值。
//查找顺序,从左到右
        // let score=[98,97,96,86,79,79,80];
        // let m=score.find(function(n){
		// 	return n<80
		// })
		// console.log(m) //79
//数组.findIndex(function(条件){书写具体条件})得到的结果是第一个符合条件的数组元素对应的下标。
//查找顺序,从左到右
        // let score=[98,97,96,86,79,79,80];
        // 	let m=score.findIndex(function(n){
		// 		return n<80
		// 	})
		// 	console.log(m)//4
// 数组.filter(function(条件){}) 可以把所有符合条件的数据过滤出来
        // let score=[98,97,96,86,79,79,80];
        // 	let m=score.findIndex(function(n){
		// 		return n<80
		// 	})
		// 	console.log(m)//[ 79, 79 ]
//splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目 
//Array.splice(index,howmany,[item1,.....,itemX])
//index	必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
//howmany	必需。要删除的项目数量。如果设置为 0,则不会删除项目。
//item1, ..., itemX	可选。向数组添加的新项目。
//返回值类型为Array	包含被删除项目的新数组,如果有的话
        //let score=[98,97,96,86,79,79,80];
        //var res=score.splice(0,0,3)
		//console.log(res,score)//[] [ 3, 98, 97, 96, 86, 79, 79, 80 ]
//copyWithin() 方法用于从数组的指定位置拷贝元素到数组的另一个指定位置中
//array.copyWithin(target, [start], [end])
//target	必需。复制到指定目标索引位置。
//start	可选。元素复制的起始位置。
//end	可选。停止复制的索引位置 (默认为 array.length)。如果为负值,表示倒数 复制结束的位置 
//含开始不含结束。
//如果复制的元素,超出数组的长度,直接舍弃,不会扩展数组
        //let score=[98,97,96,86,79,79,80];
			// 86,79,79
			//var res=score.copyWithin(1,3,5);
			//console.log(score);//[ 98, 86, 79, 86, 79, 79, 80 ]
        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值