严格模式:
除了正常运行模式,ECMAscript 5添加了第二种运行模式:“严格模式” 这种模式使得JavaScript在更严格的条件下运行。
严格模式的目的:
1.消除JavaScript语法的一些不合理,不严谨之处,减少一些怪异的行为;
2.消除代码运行的一些不安全之处,保证代码的运行安全
3.提高编译器效率,增加运行速度
4。为未来新版本的JavaScript做好铺垫
注:严格模式体现了JavaScript更安全,更合理,更严谨的发展方向,包括IE 10在内的主流浏览器,都支持它
严格模式的使用:
写在那个作用域下,在那个作用域下生效。
“use strict”
注:尽量注意不要将严格模式写在全局
用了严格模式,会有什么变量
1.全局变量声明时,必须加var
2.this 无法指向全局对象;
3.函数内重名属性 声明形参不能出现同命名的现象
3 例:
function show( num1 , num1,num2){
"use strict";
alert(num1+","+num2);
}
show(10,20,30);
如果不加"use strict"; 会输出 20,30;
4…arguments对象不允许被改变 ps:arguments只保存原本的数
function show(){
num1 ="hello";
alert(num1+" "+num2);结果为 hello 20
alert(arguments[0]+" "+arguments[1]) 结果为 hello 20
}
how(10,20);
加上"use strict";
function show(){
"use strict";
num1 ="hello";
alert(num1+" "+num2);结果为 hello 20
alert(arguments[0]+" "+arguments[1])结果为 10 20
5.新增保留字:implements interface let package private protected public static yield
JavaScript-ECMA5严格模式新增数组方法
1.indexOf()
格式:数组.indexOf(item,start);
参数:item 任意的数据
start 下标 可以不传 默认为0
功能:在数组中查找第一次出现item 元素下标 ,从start开始去查找
返回值;-1 没有查找到
>=0 查到的元素的下标
var arr = [10,23,51,65,23,51];
var index = arr.indexOf(51,3);
alert(index);
2.数组遍历
for循环
for… in
forEach(ECMA5新增)
var arr =[10,23,42,42,122,44];
arr.forEach(function( item,index,arr){
/*
item 当前遍历到的元素
index 当前遍历到的元素下标
arr 数组本身
document.write(item +" "+ index +" "+arr+"<br/>");
})
结果:
10 0 10,23,42,42,122,44
23 1 10,23,42,42,122,44
42 2 10,23,42,42,122,44
42 3 10,23,42,42,122,44
122 4 10,23,42,42,122,44
44 5 10,23,42,42,122,44
3.map 映射
var arr =[10,20,30,40]
var newArr =arr.map(function(item,index,arr){
//遍历要做的事,映射关系,不改变原数组
return item*1.3;
})
alert(newArr);//新的数组是原数组每个的1.3倍
4. folter() 过滤
var arr =[10,20,30,40]
var newArr =arr.folter(function(item,index,arr){
//过滤条件
return item>20;
})
alert(newArr);//新的数组是原数组所有大于20的元素
5,some 某些 在数组中查找是否有item的元素 有则返回ture 没有则false
短路操作:只要找到复合条件的元素,后面的循环就停止了
var arr =[10,20,30,40]
var res =arr.some(function(item,index,arr){
//过滤条件
return item>20;
})
alert(res);//返回ture
6. every 每一个
注:在数组中每一个元素是否都复合条件,符合返回true 没有返回false
短路操作:只要找到不符合条件的元素,后面的循环就停止了
var arr =[10,20,30,40]
var res =arr.every(function(item,index,arr){
//过滤条件
return item<50;
})
alert(res);//返回ture
7.reduce 归并
prev:第一次是,下标为0的元素
第二次开始 上一层遍历return的值
next:从下标1开始,当前遍历到的元素
index 当前遍历到的元素下标
arr 数组本身