一、Delete运算符
1.作用:用来删除变量、对象属性、数组成员(只能删除未用var声明的变量)
2.语法:
-删除对象:
-删除数组:
-delete删除的是变量名以及变量和值的对应关系 而内存中的值不受影响的
二、严格模式
1.作用:严格模式就是将代码放到一个更规范、安全、受限定的范围内更好的运行
2.语法:通过“use strict”字符串形式定义,可用于三个位置
-.外部js文件:在文件开头书写“use strict”则表示整个文件需按严格模式执行
-.script标签:在标签开头书写“use strict”则表示整个标签需按严格模式执行
-.函数体内:在函数体内开头书写“use strict”则表示整个标签需按严格模式执行
3.规则:
-变量必须声明后再使用,就是不能省略var
-函数的参数不能有同名属性,否则报错
-不能使用with语句
-不能对只读属性赋值,否则报错
-不能使用前缀0表示八进制数,否则报错
-不能删除不可删除的属性,否则报错
-不能删除变量delete prop,会报错,只能删除属性delete global【prop】
-eval不会再它的外层作用域引入变量
-eval和arguments不能被重新赋值
-arguments不会自动反映函数参数的变化
-不能使用arguments,callee
-不能是用arguments,caller
-禁止this指向全局对象
-不能使用fn.caller和fn.arguments获取函数调用的堆栈
-增加了保留字(比如protected、static和interface)
-其中,尤其需要注意this的限制。ES6模块中,顶层的this指向undefined,即不应该在顶层代码使用this
三、解构赋值(es6新增)
1.作用:
-解构:从数组或者对象中,提取属性和元素
-赋值:分别赋值给相应的变量
2.语法:
-数组:var 【foo,bar】 = 【1,2】(使用解构赋值可快速完成)
-对象(从右到左的赋值即:变量←属性):var {foo : x, bar : y} = {foo : "hello", bar : "world"};
console.log(x, y);
如果变量名和属性名相同可简写:var {foo, bar} = {foo : "hello", bar : "world"};
console.log(foo, bar);
四、解构数组(左右索引值相对应)
1.语法顺序:
-变量声明
-解构数组
-变量赋值
2.设置默认值
3.使用rest语法
4.利用解构赋值可交换两个变量的值
五、解构对象(如果不是声明的表达式需在表达式两边使用括号)
1.设置默认值:
2.给函数设置默认值,就是当没有传参时,所使用的值
六、模板字符串
1.语法:var str = `hello world`
2.作用:
-支持空格换行操作
-支持嵌入表达式
-${}里面即可以是变量,也支持表达式
-带标签的模板字符串
-特殊的标签函数
七、箭头函数
1.作用:
-可使用=>代替function声明(如果参数有且只有1位,形参的小括号也可省略不写;如果函数体只有一条语句,还可省略大括号及return)
-箭头函数没有自己的this,使用的是外部的this
-箭头函数没有arguments
-箭头函数不能作为构造函数