07ECMAScript5

一严格模式

  1. 在严格模式下,声明变量必须使用 var
  2. 在严格模式下,不能使用八进制
  3. 在严格模式下,不能使用arguments.callee
  4. 在严格模式下,不能使用eval() //eval() 可以执行其中的代码串 1 不安全 2污染全局变量
  5. 在严格模式下,不能使用with(obj) // 方便查找属性 先在obj内部查找 没有在往原型链上查找
  6. 严格模式下delete 删除对象中的属性报错,在普通模式下,使用delete删除变量,不会报错,但是不能删除变量
  7. 全局变量消失(this)
  8. with(obj)//严格模式下报错

with可以简化对象操作,with运行的原理,首先会将所有的变量锁定现在obj的范围内,如果有直接使用,如果没有则根据作用域链的方式向上级查找

  1. 函数中的同名参数(在非严格模式下,形参中出现同名变量,后面的会覆盖掉前面的(覆盖发生在函数调用的时候,传值的过程还是一一对应),严格模式下,不允许函数出现同名参数) ;
  2. 对象中同名属性(可以忽略的)非严格模式下,对象中出现同名变量,后面的覆盖前面的,严格模式下,会忽略前面的变量直接看最后一个同名属性

二、新增加的数组方法

forEach((item, index ,array)=>{})
forEach() 方法用于遍历调用数组的每个元素,并将元素传递给回调函数。

  1. forEach() 对于空数组是不会执行回调函数的
  2. 回调函数内,会忽略return的返回值,整体没有返回值
  3. 原数组没有发生变化
    var arr=['1','2','3','4','5'];
    var res=arr.forEach(function(value,index,arr){
        // console.log(arguments);
        console.log(value,index,arr);
        return 111;//会被忽略
    });
    console.log(res);//undefined

map((item, index ,array)=>{})
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

//map 映射 遍历->操作->返回
var arr=[10,20,30,40];
var newArr=arr.map(function(item,index,Array){
    return item + 2; 
})
console.log(newArr);//[12, 22, 32, 42]

reduce((prev,next,index,Array)=>{})
reduceRight((prev,next,index,Array)=>{}) :(其他和redudce()方法一样 只是prev,value,index 是从数组末尾向前面算起的 )
功能:遍历数组累加数组中的元素
说明:遍历开始 ,之后就为前面累加的和
prev: 第一次prev的值为第一个元素的值 ,之后上一次遍历累加和;
next:当前遍历的元素

var arr=[10,20,30,40];
var newArr=arr.reduce(function(prev,next,index,Array){
    console.log(arguments)
    alert(prev+", "+next)
    return prev + next;
})
alert(newArr);//100
/*
console.log(arguments)的结果
Arguments(4) [10, 20, 1, Array(4), callee: ƒ, Symbol(Symbol.iterator): ƒ]
Arguments(4) [30, 30, 2, Array(4), callee: ƒ, Symbol(Symbol.iterator): ƒ]
Arguments(4) [60, 40, 3, Array(4), callee: ƒ, Symbol(Symbol.iterator): ƒ]
*/

filter((item, index ,array)=>{})过滤
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

var arr=[10,20,30,40];
var res=arr.filter(function(item,index,Array){
    return  item>10 ; //返回满足条件的值
})
 console.log(res);//[20, 30, 40]

**some((item, index ,array)=>{return 条件表达式})**一真就真 类似 ||
**判断return 后面的条件是否成立,如果成立,终止循环,返回true,否则false
**

arr=['1','2','3','4','5']
var res=arr.some(function(item,index,arr){
         // console.log(arguments)
         return item==3;//判断数组中是否存在30
         //判断return 后面的条件是否成立,如果成立返回true,否则false
});
 console.log(res);//true

**every((item, index ,array)=>{return 条件表达式})**一假就假 类似 &&
如果判断有元素不符合条件,终止循环,返回false,否则true
**

arr=['1','2','3','4','5']
var res=arr.every(function(item,index,arr){
         // console.log(arguments)
         return item==3;//判断数组中是否存在30
         //判断return 后面的条件是否成立,如果成立返回true,否则false
});
 console.log(res);//false

fill(value, start, end)
给数组填充数据,配合 Array()

    // 语法 array.fill(value, start, end)
    // fill() 方法用于将一个固定值替换数组的元素。
    //value 填充的值  start ,end 数组中的长度位置(在start和end之间填入固定的值)
    var arr=new Array(5);//中间的5代表哦数组的长度  其中的值为undefined
    arr.fill("久哥最帅");
    console.log(arr);//["久哥最帅", "久哥最帅", "久哥最帅", "久哥最帅", "久哥最帅"]

JSON拓展

**JSON.stringify(obj);**将对象转为JSON对象
JSON.parse(jsonstr);将JSON对象转为普通对象

  var str= obj={
                 name:"zhangsan",
                 age:10,
                 sex:"男"
         }
    var res=JSON.stringify(obj)
    console.log(res);//{"name":"zhangsan","age":10,"sex":"男"}
    var obj1=JSON.parse(res)
    console.log(obj1);//{name: "zhangsan", age: 10, sex: "男"}

JSON.stringify(obj,function(key,value){}) 将obj转化为JSON ,并对它进行遍历
JSON.parse(Json,function(key,value){})
将JSON转化为obj ,并对它进行遍历

  • 遍历的时候是有前提的,每一次都要求有返回值,如果没有返回值,则遍历立即结束
  • 返回值作为对象当次遍历元素的值,
  • 最后一次,键为空,值为要返回的对象
    var obj={
                 name:"zhangsan",
                 age:10,
                 sex:"男"
         }
    var res=JSON.stringify(obj,function(key,value){
        if(key){
            return 27+value;
        }else{
            return value
        }
    })
    console.log(res)

toJSON() 格式化时间

    var d=new Date()
    console.log(d);//Mon Mar 16 2020 21:22:47 GMT+0800 (中国标准时间)
    console.log(d.toJSON());//2020-03-16T13:22:16.403Z
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值