今天整理一下es6目前知道的几个小点,这周把es6的新语法看熟悉
let ,const
首先为啥要引进let ,const?因为var 太烂了
var 烂?怎么说?
来个经常看到的场景
我设置三个按钮,定义方法onclick
var arr = [1,2,3];
for(var i=0;i < arr.length;i++){
button.onclick = funtion(){
alert(i);
}
}
然后呢?全是输出3,老方肯定讲过,此时只要外套一个function就能解决,这是因为var没有块级作用域造成的,i是全局变量,一次声明,显示的是最后的结果,当你for循环结束,你的alert才开始逐个赋值,一看i是3,得,就是你3了,惨了
咋弄,没事,引进了let,let能识别作用域,只要你在自己的代码块中,我就出不去,这下刚刚的问题,就完美解决了
其他语言中,都有常量,js没有这玩意,初看还挺好,多自由啊,随便改变变量值,但是仔细一想,这全是变量,我一个模块自己用还好,万一其他人也用了这个,你这变量这么一改,爽死,本来我设定a的值好好的是1,你改成了2,还不报错.
于是es6说,别慌,现在开始你们都用let 和const,这下你要是还敢改变a的值,就告诉您:
a has already been declard
咋样,是不是很厉害,所以这么一改,js总于有点像样了
那么接下来看下一个属性,箭头函数.
不过这个没啥好说的,就是给你省略一个单词 function :现在开始,用=>代替
啥,没看懂?
let show = function(){} 这个知道吧 现在可以这么写了
let show = ()=>{}
完事
你可能会说这也没啥嘛,回调的时候方便了许多
然后是函数新加的一个变量表示方式
...args
以前传参数,有几个写几个,test(a,b,c,d.......)有时候要传几十个,而且后面的参数都一样,不想写了,咋办? 用... args代替,之后的几个参数就能被传入而不报错了
网友评论