ES6(ECMAScript 6的简称),是于2015年6月正式发布的JavaScript语言的标准变量声明let/const//varvar a=1;var a=5;if(a>4){ var b=10;}console.log(b); //10//letlet a=1;let a=5; //报错:dentifier ‘a’ has already been declaredlet a=5;if(a>4){ let b=10;}console.log(b); //报错:b is not defined//constconst a=1;a=5; //报错:Assignment to constant variable.var可以重复定义并无块级作用域,let不能重复定义有块级作用域,const定义常量赋值let list=[1,2,3]let [a,b,c]=listconsole.log(a,b,c) //1 2 3let dict={name:‘jim’,age:21}let {name,age}=dictconsole.log(name,age) //jim 21let dict={name:‘jim’,age:21}let [name,age]=dict //报错:dict is not iterable在解构赋值过程总,必须左右结构相同箭头函数(python中的lambda)#普通函数function fn(arg1,arg2){ return arg1+arg2}#箭头函数(arg1,arg2)=>arg1+arg2var fn=(arg1,arg2)=>arg1+arg2 //方便以后多次调用箭头函数中当参数只有一个的时候可以省略括号,当无参数时必须写一对小括号,当函数体只有一句时可以省略大括号,且语句默认就是返回值,不需要写return默认参数//之前function fn(arg1,arg2){ let x=arg1 || 5; let y=arg2 || 6; return x+y}console.log(fn) //11//es6function fn(arg1=5,arg2=6){ return arg1+arg2}console.log(fn) //11 let list=[1,2,3,4,5,6]function fn(arg1,arg2,…args){ console.log(arg1,arg2,args)} fn(…list) //1 2 Array(4) Array(4)表示为[3,4,5,6]这种写法更直观清晰,且介绍内部的逻辑代码,和python写法很类似数组let list = [1, 2, 3, 4, 5, 6]//maplet new_list=list.map((arg)=>{ //每个元素将作为参数依此传入 if(arg>4){ return true }else{ return false } }) console.log(new_list) //[false, false, false, false, true, true]//reducelet list = [1, 2, 3, 4, 5, 6] let new_list=list.reduce((sum,arg)=>{ //第一次将前两个参数传入,接下来将结果作为第一个参数,其他list元素以此传入 return sum+arg }) console.log(new_list) //21//filterlet new_list=list.filter((arg)=>{ if(arg>4){ return true //根据返回的布尔值判断是否放入新list } }) console.log(new_list) //[5,6]//forEachlet new_list=list.map((arg)=>{ //每个元素将作为参数依此传入 return arg }) console.log(new_list) //[1, 2, 3, 4, 5]这和python中的map,reduce,filter高阶函数作用几乎相同,只不过在js中只作为了数组的方法,而python中是没有forEach方法的,原因可能是map可以达到作用吧,在我看来是这个样子,如有不同,请告知本宝宝,哈哈。-对象let name=‘jim’let age=21let obj={name:name,age:age,show:function(){ console.log(name,age)}}obj.show() //jim 21console.log(obj) //{name: “jim”, age: 21, show: ƒ} //以上可以简化为let obj={name,age,show(){ console.log(name,age)}}同名的key和value我们可以省略成只写一个,对于函数我们可以省略function字符串let str=“http://www.jim.com/index.html" //不存在,瞎写的//startsWith判断是否以某字符串开始if (str.startsWith(‘http://’)){ console.log(“这是一个http的地址”) //这是一个http的地址}//endsWith判断是否以某后缀结束if (str.endsWith(’.html’)){ console.log(“这是一个html文件”) //这是一个html文件}很多语言的字符串都有这种判断方法,现在的javascript也在不断的完善,666面向对象//以前function Person(name,age){ this.name=name; this.age=age;}Person.prototype.show=function(){ //当然也可以在Person函数内部定义,若使用箭头函数,则函数将失去效果,this指向了window对象 this.show=function(){ 函数体 } console.log(this.name,this.age)}let p=new Person(‘jim’,‘21’);p.show() //jim 21function Chil(name,age,role){ Person.call(this) this.name=name this.age=age //可以直接将参数写入call函数内 this.role=role}Chil.prototype.show=Person.prototype.show 不写的话用不到show函数,当然这只是一种方式let c=new Chil(‘han’,‘23’,‘student’)c.show()//es6class Person{ constructor(name,age){ this.name=name this.age=age } show(){ console.log(this.name,this.age) }}let p=new Person(‘jim’,23)p.show() //jim 23class Chil extends Person{ constructor(name,age,role){ super(name,age) this.role=role }}let c=new Chil(‘han’,‘23’,‘student’)c.show() han 23使用class来定义类,constructor定义构造函数super实现对基类构造的调用,还有extends的继承,都借鉴了java等语言,使js语法变得更易读,易编写。