ES6 特性
let const var
let 块级作用域。不能重复申明。
const 常量,块级作用域。不能重复申明
var 函数级作用域
箭头函数(类似python lambda)
()=>{}
当有且仅有1个参数,()可省
当有且仅有1个return,{return}可省略
<script> //let show=function (a) { // alert(a*2); //}; //show(12) let show=a=>alert(a*2); show(12); </script>
<script> //let show=function (a) { // alert(a*2); //}; //show(12) let show=a=>alert(a*2); show(12); let arr=[11,22,55,9]; arr.sort((n1,n2)=>n1-n2); alert(arr) </script>
参数
(a,b,...args)
或者用于数组展开
arr=[1,2,3]
alert(...arr) 弹窗3次分别显示1 2 3
alert(arr) 痰喘1次显示1,2,3
解构赋值
结构相同,申明赋值同时进行。
类似python 如let [a,b,c]=[1,2,3]
let {a,b,c}={a:11,b:12,c:13};
alert(b) // 显示12
模版字符串
<script> let a='aaa'; let str=`<p>1<p> <p>${a}<p>`; alert(str) </script>
面向对象
<script> class User{ constructor(name,pass){ this.name=name; this.pass=pass; } showName(){ alert(this.name); } } let u1=new User('n1','pwd'); u1.showName(); </script>
继承写法extends类似java略。
json对象
parser与stringify
<script> json={a:'v1',b:'v2'}; str='http://a.com/'+JSON.stringify(json); //http://a.com/{"a":"v1","b":"v2"}// 返回字符串 str2=JSON.parse('{"a":"v1","b":"v2"}'); //返回对象, json 对象 str='http://a.com/'+encodeURIComponent(JSON.stringify(json)); //http://a.com/%7B%22a%22%3A%22v1%22%2C%22b%22%3A%22v2%22%7D alert(str); console.log(str2); </script>
简写1 kv相同写k
<script> let a=2; let b=3; //let c={a:a,b:b}; let c={a,b}; console.log(c); </script>
简写2
<script> let a={ k1:'v1', show:function () { alert(1) }, show2(){ alert(2) } }; a.show(); a.show2(); alert(a.k1); </script>
数组
map 输入数与输出数相同
let arr=[11,22,33,60,99] let arr2=arr.map(item => item >=60? 'jige':'nonono') console.log(arr2)
reduce 一堆出来一个。 测试reduce 会依次遍历数组(tmp,item, index)
代码: 如果没有return ,迭代的tmp会变undefined除了第一次。
let arr=[10,11,12,13] let arr2 = arr.reduce(function (tmp, item, index) { console.log(tmp+' '+item+' '+index) return tmp+item })