ES6

变量

var 缺点:可以重复修改变量的值,不限制修改变量的值,没有块作用域

解决办法:用let取代var 常量用const表示

箭头函数

function(){}

()=>{}

只有一个参数括号可以省略;

如果只有一个return,大括号和return都可以省略;

没有参数,不能省略

优点:简洁明了;可以利用this改变上下文对象,在箭头函数中始终当前这一个函数

let show=function(a,b){
return (a+b);
}
show();
let show=(a,b)=>a+b;
show();

解构赋值

对多个变量同时赋值

注意:1.左右两边结构必须一样,

let [{a,b},num,[c,d,[e,f]],str]=[{a:1,b:2},3,[4,5,[6,7]],"很健康"];

document.write(a,b,num,c,d,e,f,str);

//如果解构不成功,变量的值就等于undefined

let [h,j,g]=[137,289];

console.log(h,j,g);//g为undefined

//不完全解构,即等号左边的模式,只匹配一部分的等号右边的数组

let [x,y]=[1,2,3];

console.log(x,y);

2.右边必须是个东西

let {a,b}={1,2}//报错

let {a,b}={a:1,b:2}//正确

3.声明和赋值不能分开,必须在一句话当中

let {a,b};{a:1,b:2};//报错

let {a,b}={a:1,b:2}//正确

单击按钮一直会出现满足条件的最后一个数的原因
也就是onclick那个匿名函数是在for循环执行完成后(用户单击链接时)才被调用的。
而调用时,需要对变量i求值,解析程序首先会在事件处理程序内部查找,但i没有定义。
然后,又到方法外部去查找,此时有定义,但i的值是3(只有i大于3才会停止执行for循环)。
因此,就会取得该值——这正是闭包(匿名函数)要使用其外部作用域中变量的结果。
而且,这也是由于匿名函数本身无法传递参数(故而无法维护自己的作用域)造成的

解决的方法
既然知道函数调用外部变量的时候就构成了一个闭包,里面的变量会受到别的地方的影响,那么我们

现在要做的就是,构建一个只有自己本身才可访问的闭包,保存只供本身使用的变量


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script>
window.οnlοad=function(){
var btns=document.getElementsByTagName("input");
for(var i=0;i<btns.length;i++){
方法1将下标作为对象属性(name:"index",value:i的值)添加到每个数组项中
btns[i].index=i;
btns[i].οnclick=function(){
alert(this.index);
}
//方法2加一层闭包,a以函数参数形式传递给内层函数:
即构建一个只有自己本身才可访问的闭包,保存只供本身使用的变量
for(var i=0;i<btns.length;i++){
(function(a){//形参
btns[i].οnclick=function(){
alert("我是第"+a+"元素");
}
})(i);
方法3使用let定义
for(let i=0;i<btns.length;i++){
btns[i].οnclick=function(){
alert(i);
}
}
}
</script>
</head>
<body>
<input type="button" value="按钮1"/>
<input type="button" value="按钮2"/>
<input type="button" value="按钮3"/>
</body>
</html>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值