严格模式(strict mode)
设立目的:1、消除js语法中一些不合理、不严谨之处,减少一些怪异行为
2、提高编译器效率,提高运行速度
3、保证代码运行安全
进入严格模式标志 ‘use strict’ 分为全局和局部
全局模式:即‘use strict’ 在整个脚本的第一行,整个脚本都以“严格模式”运行 全局有效
局部模式:将“use strict”放在局部,只在局部范围内生效
1 function fn() { 2 "use strict"; 3 a = 100; 4 alert(a); 5 } 6 fn(); //a is not defined
严格模式对语法和行为的限制
1、变量必须先声明,再调用,否则直接报错
1、严格模式下:"use strict" a = 100; alert(a);
//a is not denfined //必须先var,先声明,才能调用
2、函数内形参不允许重名
//2、函数内形参不允许出现重名的函数 'use strict'; function fn(a,b,b){ console.log(a); console.log(b); console.log(b); } fn(1,2,3); //正常模式下显示为1,3,3 //严格模式下则报错
3、arguments对象不允许被改变
//3、arguments对象在严格模式下不允许被改变 'use strict'; function fn(a,b){ a = 100; console.log(a);//100 console.log(b);//2 console.log(arguments);//1,2 } fn(1,2); //严格模式下arguments显示为1,2
4、this不能指向全局对象
//4、this无法指向全局 "use strict"; function fn(){ console.log(this); } fn(); //正常模式下,指向整个window //严格模式下,显示this => undefined
新增数组方法
indexof() 返回元素在数组中位置,没有返回-1
forEach(callback(v,k)) 遍历数组中每一个元素,无返回值
map(calllback(v,k)) 返回一个新数组,数组中的元素就是经过处理后的数组
filter(callback(v,k)) 过滤,只有当boolean值为true是才返回