2020.0507--ES5新增和如何调bug

一、ES5新增
什么是ES5?ECMAScript5
ES的版本更新,向下兼容,在老版本的基础上增加了一些新内容
1:严格模式
严格模式:更严格的开发模式
严格模式的意义:
消除JavaScript语法的一些不合理,不严谨之处,减少一些怪异行为;
消除代码运行的一些不安全之处,保证了代码运行的安全;
提高编译器效率,增加运行速度;
为未来新版本做铺垫;
严格模式的开启模式:
在作用域开始的位置,加上一行字符串”use strict”;
严格模式开启后的变更
1.声明变量必须添加关键字(var)
2.不允许参数名重复
3.没有明确隶属对象的函数中的this指向undefined
4.Arguments的内容不会被形参的改变而影响
5.Arguments.callee被禁止使用
2:新增的一些数组方法
1:indexOf:
// 功能:返回指定数据所在的索引,没有则返回-1
// 参数:第一个是要查找的数据,第二个是起始位置(可选)
// 返回值:索引或者-1
// 是否改变原数组:否
var res = arr.indexOf(5)
var res = arr.indexOf(“w”)
var res = arr.indexOf(2,6);
console.log(res)

2:forEach:(只有数组能用)
// 功能:遍历数组
// 参数:函数,函数里面自带三个形参,第一个是数据,第二个是索引,第三个是数组自身
// 返回值:undefined
// 是否改变原数组:否
var res = arr.forEach(function(val,idx,self){ //forEach里面是个函数,函数自带三个形参
console.log(val,idx,self)
})
console.log(res);

3:map:
// 功能:遍历数组,修改数据
// 参数:函数,函数里面自带三个形参,第一个是数据,第二个是索引,第三个是数组自身
// 返回值:数组,中的数据是:每次遍历到数组中数据时的返回值
// 是否改变原数组:否
var res = arr.map(function(val,idx,self){
console.log(val,idx,self);
return “helllo” //数组中每个数据都是hello
return val *= 1.3; //是数组中每个数据都增加百分之30
})
console.log(res);

4:filter
// 功能:1遍历数组,2过滤数据
// 参数:函数,这个函数自带三个形参,1数据,2索引,3数组自身
// 返回值:数组,中的数据是:每次遍历到数组中数据时的返回值,为true时的值
// 是否修改原数据:否
var res = arr.filter(function(val,idx,self){
console.log(val,idx,self);
return true
return typeof val === “number”; //如果是数字就返回出去
})
console.log(res);

5:some
// 功能:1遍历数组,2检测所有数据(只要有一个返回true,就是true,同时停止遍历)
// 参数:函数,这个函数自带三个形参,1数据,2索引,3数组自身
// 返回值:布尔值,遍历数组中数据时,只要有一个返回true,就是true,同时停止遍历
// 是否修改原数据:否
var res = arr.some(function(val,idx,self){
console.log(val,idx,self);
return val === 2;//判断数组里面是否有这个数据,如果数组里面有一个,返回true,同时停止遍历
})
console.log(res);

6:every
// 功能:1遍历数组,2检测所有数据(必须所有返回true,才是true)
// 参数:函数,这个函数自带三个形参,1数据,2索引,3数组自身
// 返回值:布尔值,遍历数组中数据时,必须所有返回true,才是true,只要有一个false,就是false,停止遍历
// 是否修改原数据:否
var res = arr.every(function(val,idx,self){
console.log(val,idx,self);
return true ;
})
console.log(res);

7:reduce
// 功能:1遍历数组,2归并
// 参数:
// 1.函数,这个函数自带四个形参,1上一个值,2数据,3索引,4数组自身
// 2.指定默认情况下 的 上一个值↑;如果没有指定,上一个值,默认找数组的第一个数据
// 返回值:最后一个遍历的返回值
// 是否修改原数据:否
var res = arr.reduce(function(prev,val,idx,self){
console.log(prev,val,idx,self);
return “返回给了下次执行时的prev”;
},“prev的默认值,如果没有,prev找数组的第一个数据”)
console.log(res);

***// 案例:***利用reduce实现数组中所有数据的累加
var arr = [2,3,4,5,6,7];
var res = arr.reduce(function(prev,val,idx,self){
return prev + val;//上一次的加这一次的
})
console.log(res);

reduceRight等同于reduce,只是反向归并,从右向左遍历数据

二、如何调bug
观察:
1:程序有报错,结果没出来
(1)观察报错
(2)根据报错找到指定行号
(3)观察哪里出错
(4)修改正确
2:程序有报错,但是结果出来了,可是不对
(1)观察报错
(2)根据报错找到指定行号
(3)观察哪里出错
(4)找到最终结果
(5)向前反推
(6)观察数据来源
(7)根据数据来源,计算规划
(8)观察程序的执行过程和代码是否正确
(9)修改正确
3:程序无报错,结果没出来
(1)重新写:将思路捋一遍
(2)反推:要求对当前程序非常了解
4:程序无报错,但是结果出来了,可是不对
(1)找到最终结果
(2)向前反推
(3)观察数据来源
(4)根据数据来源,计算规划
(5)观察程序的执行过程和代码是否正确
(6)修改正确
观察工具:
判断当前位置的代码是否执行:console.log();
一定要在报错的行号上面打印,因为报错会阻塞 程序执行
判断当前变量或数据是否正常:console.log(变量或数据)
逐行执行代码:
打断点,让代码逐行执行
1:关键字 debugger
2:利用浏览器控制台

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值