ECMAScript
ES6.0是JavaScript语言下一代标准,2015遍6月正式发布
目标:使JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言
ES5
-
严格模式:strict mode 即在严格条件下运行
-
消除JavaScript语言的一些不合理,不严谨之处,减少一些怪异行为
-
消除代码运行的一些不安全之处,保证代码运行的安全
-
提高编译器效率,为未来的JavaScript做好铺垫
-
注:严格模式必须在程序顶部
-
声明变量必须先声明,必须要有var关键字
-
严格模式下不能删除变量
-
在函数里的this没有对象,返回undefined
-
-
JSON对象
-
JSON.stringify(obj/arr):将js对象 /数组转为json对象(数组)
-
JSON.parse(json):将json对象数组转换为js对象(数组)
-
-
Object扩展
-
Object.create(prototype,[descriptors])
-
作用:以制定对象为原型创建新的对象,为新的对象制定新的属性,并对属性进行描述
-
value:指定值
-
writable:标识杜昂前属性值能否被修改,默认Wiefalse
-
configurable:标识当前属性能否被删除。默认为false
-
enumerble:标识当前属性能否用for in枚举。默认为false
-
-
Object.defineProperties(object,descripetors)
-
作用:为指定对象定义扩展多个属性
-
get:用来获取当前属性值的回调函数
-
set:修改当前属性值的触发的回调函数,并且实参即为修改后的值
-
-
-
Array扩展
-
indexOf(value):得到值在数组中的第一个下标
-
lastIndexOf(value):得到值在数组中的最后一个下标
-
forEach(function(item,index){}):forEach不用于对象的循环使用
-
map(function(item,index){}):遍历数组返回一个新的数组,返回加工之后的值
-
filter(function(item,index){}):遍历过滤出一个新的数组,返回条件为true的值
-
-
Function扩展:function.prototype.bind(obj) 将函数内的this绑定为obj,并将函数返回
-
function fun(age){
this.name='liu';
this.age=age;}
var obj ={}
fun.bind(obj,23)()
console.log(obj.name,obj.age)//liu 23
-
-
ES6简介
-
增加了let命令,用来声明变量,类似于var
-
与var的区别
-
let不能重复声明变量,代表唯一
-
不存在变量提升
-
let声明的变量只在它所声明的代码块内有效
-
-
-
const声明的常量,后期不能修改常量的值
-
语法:const 常量名=值
-
-
只能声明1次,定义了常量就不能进行修改
-
常量的命名遵循驼峰命名法,多个单词用_隔开
-
声明常量后就要确定常量的值
-
const只能在代码块内有效
-
-
-
模板字符串:为增强版字符串,用反引号`表示,里面的变量用${}抱起来就可以实现
-
var n=10 $("div").append(`there are<b>${n}</b>`);
-
-
let解析
-
结构赋值
-
let {参数名}=对象 若不存在参数,则输出undefined
-
-
解析对象
-
let{参数1,参数2}={属性1:值1,属性2:值2}
-
-
解析数组:let [a,b]=数组
-
默认从数组第一个开始输出
-
-
-
箭头函数
-
es6允许用箭头=> 声明函数。 格式:()=>等价于function( ) {}
-
没有参数时 语法 :变量名=( )=>{函数体}
var f=()=>{console.log('10')}
-
有参数时 语法:变量名=(参数1,参数2)=>{函数体},如果只有一个函数,可以将( )省略,
两个或两个以上参数不能省略( ) ,每个参数用逗号' ,' 隔开
let fun1=()=>{ return 456 }
-
有返回值时 语法:变量名=(参数)=>{return 返回值}
若函数体重就一条语句,可省略大括号{},若该语句是返回值,可以省略return
-
-
-
箭头函数的this
-
函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象
-
不可以当作构造函数,即不可以使用new命令,否则会抛出一个错误
-
不可以使用argument对象,该对象在函数体内不存在,如果要用,可以使用rest参数代替
-
-
扩展运算符:是三个点(...) ,好比rest参数的逆运算,将一个数组转为用逗号分隔的参数序列
console.log(...[1,2,3])//1 ,2 ,3
console.log(1,...[2,3,4],5)//1,2,3,4,5
//一般用于函数调用
function add(x,y){
return x+y
}
const number=[2,3]
console.log(add(...number))//5
应用:可以复制数组,将类似数组转换为真正的数组
//复制数组
const a1= [1,2]
const a2 = [...a1]
console.log(a2)
//将 类似数组转为真正的数组
console.log([...'hello']);//["h", "e", "l", "l", "o"]
-
函数默认值:ES6之前不能直接为函数的参数指定默认值,只能采用变通的方法
-
ES5: function log(x,y){ y=y||'world'; console.log(x,y) } log('hello')//hello world log('hello','China')//hello China log('Hello','')//Hello world ES6: function log(x, y = 'world') { console.log(x, y) } log('hello') //hello world log('hello', 'China') //hello China log('Hello', '') //Hello
-
ES6的默认值写法,更简洁,阅读代码的人可立即意识到哪些是可以省略的,不用查看函数体或文档;其次,有利于将来的代码优化
-
参数变量是默认声明的,所以不能使用const 和let再次声明
function foo(x=5){ let x=1;//error const x=2//error } foo()
-