一、Error对象 - 错误
1、浏览器自带4种错误类型:可以快速找到自己的错误
① 语法错误:SyntaxError - 多半都是你的语法符号写错了
② 引用错误:ReferenceError - 没有创建就直接使用了
③ 类型错误:TypeError - 不是你的方法,你却去使用了
④ 范围错误:RangeError - 只有一个API会碰到:num.toFixed(d);//d取值范围的:0~100之间
2、只要发生错误,就会报错,会导致后续代码终止
错误处理:就算发生错误不希望报错,而是给一个错误的提示,后续代码可以继续执行。
语法:
try{
只放入你可能出错的代码
}catch(err){
发生错误后才会执行
console.log(err);//err就是我们的错误提示,英文
console.log("中文错误提示");
}
try...catch...的性能非常差,几乎里面的代码效率会被降到最低
*可以用一个技术代替:if...else...
*开发经验:记住一切的客户端输入/用户输入都是坏人 - 你不必担心,只要你做好防护就不会出现错误(!isNaN,比较运算,正则)
3、抛出自定义错误
throw new Error("自定义错误信息") - 只要是报错都会卡主后续代码
二、Function对象
1、创建:3种
① 声明:function 函数名(形参,...){函数体;return 返回值;}
② 直接量:var 函数名=function(形参,...){函数体;return 返回值;}
③构造函数:var 函数名=new Function("形参1","形参2",...,"函数体;return 返回值;");
//以下案例,我们让用户来参与到底是顺序还是降序排列
var arr=[321,5,43,65,8,213,43,765,12];
var user=prompt("排序数组,如果您输入a-b则为升序排列,如果您输入b-a则为降序排列");//"a-b" "b-a"
var compare=new Function("a","b","return "+user);
arr.sort(compare);
console.log(arr);
2、考点:
① 创建
② 作用域:变量的使用规则:优先使用局部的,局部没有找全局,全局没有就报错
③ 声明提前:
④ 按值传递:
⑤ 重载:相同的函数名,传入不同的实参,可以自动选择对应的函数执行操作
问题:js的语法不支持重载,js不允许多个同名函数同时存在,如果同时存在,最后的会覆盖之前的所有
解决:在【函数中】有一个对象 - arguments对象
arguments:只能在函数中使用,自动创建,是一个类数组对象(类似数组)
作用:可以接收所有传入的实参
argument对象是一个类数组对象:
只有3个点和数组相同:
(1)使用下标
(2)使用length
(3)遍历
arguments可以做的事:
(1)实现重载:通过在函数内部判断arguments,执行不同的操作
(2)以后有没有形参都无所谓
(3)正式开发中,有可能会将多个函数整合为一个函数 - 代码优化
⑥ 匿名函数:没有名字的函数
(1)匿名函数自调:
为什么:节约内存,因为匿名函数,没有变量引用着,用完,就会立刻释放变量
(function(){
//以后可以代替全局代码写法,尽量不要再外部再去书写JS(不用担心事件会被释放掉)
})();
(2)匿名函数回调:将函数作为实参,传递给其他函数调用
a、学习回调的目的:让你们知道哪些叫做回调:只要不是自调,就是回调
arr.sort(function(){})
str.replace(reg,function(){})
btn.onclick=function(){}
b、以后ES6技术:箭头函数:简化一切的回调函数
c、了解一下回调函数的原理