es5总结
xiong.jpg
1. strict模式
严格模式,限制一些用法,'use strict';
为什么使用严格模式:消除代码运行的一些不安全之处,保证代码运行的安全;
消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
提高编译器效率,增加运行速度;
为未来新版本的Javascript做好铺垫。"use strict";
x = 3.14; //报错 不允许使用未声明的变量或对象
"use strict"; var x = 3.14; delete x; //报错 不允许删除变量或对象。
"use strict"; function x(p1, p2) {};
delete x; //报错 不允许删除函数。
"use strict"; function x(p1, p1) {}; // 报错 不允许变量重名
"use strict"; var x = 010; // 报错 不允许使用八进制
"use strict"; var x = \010; // 报错 不允许使用转义字符
"use strict"; var obj = {}; Object.defineProperty(obj, "x", {value:0, writable:false});
obj.x = 3.14; // 报错 不允许对只读属性赋值
"use strict"; var obj = {get x() {return 0} };
obj.x = 3.14; // 报错 不允许对一个使用getter方法读取的属性进行赋值
"use strict"; delete Object.prototype; // 报错 不允许删除一个不允许删除的属性
"use strict"; var eval = 3.14; // 报错 变量名不能使用 "eval" 字符串:
"use strict"; var arguments = 3.14; // 报错 变量名不能使用 "arguments" 字符串:
"use strict"; with (Math){x = cos(2)}; // 报错 不允许使用with
"use strict"; eval ("var x = 2");
alert (x); // 报错 由于一些安全原因,在作用域 eval() 创建的变量不能被调用:
禁止this关键字指向全局对象 function f(){ return !this;
}
// 返回false,因为"this"指向全局对象,"!this"就是false
function f(){
"use strict"; return !this;
}
// 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。
2.Array增加方法
forEach (js v1.6)
forEach方法中的function回调支持3个参数,第1个是遍历的数组内容;第2个是对应的数组索引,第3个是数组本身var sum=0;var arr=[1,2,3];
arr.forEach(function(value,i,arr){
sum+=value; console.log(arr[i]==value)//true});console.log(sum);
map (js v1.6)
map方法的作用不难理解,“映射”嘛,也就是原数组被“映射”成对应新数组。下面这个例子是数值项求平方:
遍历数组,return返回组成一个新数组var data = [1, 2, 3, 4];var arrayOfSquares = data.map(function (item) { return item * item
});
alert(arrayOfSquares); // 1, 4, 9, 16
filter (js v1.6)
过滤。刷选,filer过滤掉数组不需要的元素,返回过滤后的新组数,用法同map相似
filter的回调函数返回boolean为true的值var arr=[1,3,4,5,0];var arr2=arr.filter(function(item){ return item;//为true则返回回去})//arr2=[1,3,4,5];var arr2=arr.filter(function(item){ return item=="3";
})