ES5
严格模式
必须要使用var声明
this不能指向全局变量
不能在不是方法块的里面定义函数
禁止8进制方法
arguements的形参不一致(不同步)
使用严格(全局)模式:
"use strict";
n = 10;
console.log(n);//会报错
使用严格(局部)模式
function fn(){
"use strict";
n = 10
console.log(n);//会报错
}
ES5-bind
绑定一个新对象, 让函数中的this指向该对象, 一般在定时器中使用较多。
var user = {
username:'张三',
}
var obj ={
print:function(){
console.log(this.username);
}
}
setInterval(obj.print.bind(user),2000)
forEach()
遍历的函数 没有返回值
arr.forEach(function(value,index,array){
//第一个value表示值 第二个index表示下标 第三个表示你遍历的数组
})
map()
遍历的函数 有返回值 //返回数组 数组的长度和我们原来的数组长度一致
var newArry = arr.map(function(value,index,array){
//第一个value表示值 第二个index表示下标 第三个表示你遍历的数组
})
filter()
过滤器 返回值为数组
var arrs = [12,11,13,10,15]
//过滤掉12以下的数据
var newarry = arrs.filter(function(value,index,array){
if(value>12){
return value
}
})
console.log(newarry);//值为13,15
reduce()
计算方法 从左到右
var arrs = [1,2,3,4,5]
var sum = arrs.reduce(function(p,c,i,a){
return p+c
})
console.log(sum);计算1+2+3+4+5
reduceRight()
计算方法 从右到左
var arrs = [1,2,3,4,5]
var count = arrs.reduceRight(function(p,c,i,a){
return p+c
})
console.log(count);计算5+4+3+2+1
every()
遍历每一个是否都符合条件 返回布尔类型的值 都符合条件返回true 有一个不符合返回flase
var numberArr = [1,20,15,30]
var isTrue = numberArr.every(function(v,i,a){
return v>0
})
console.log(isTrue);值为true
some()
遍历每一个是否有一个符合条件 返回布尔类型的值 有一个符合条件返回true 都不符合返回flase
var numberArr = [1,20,15,30]
var isTrue = numberArr.some(function(v,i,a){
return v<40
})
console.log(isTrue);值为true
now()
针对日期 新增方法 now 获取当前日期离1970年1月1日e时e分e秒的毫秒值(时间戳)
var n = Date.now()
console.log(n);
箭头函数 箭头函数没有this
如果只有一个参数可以省略() 只有一句代码执行可以省略{}
var fn = name=>console.log(name+'你好')
fn('Tom')
document.getElementById('btn').onclick =function(){
console.log(this);//里面的this会指向button
}
document.getElementById('btn').onclick = ()=>{//如果需要提高效率 建议使用
console.log(this);
}