Error:错误对象
1,浏览器自带四种错误对象:熟练可以快速的找到自己的错误。
语法错误:SyntaxError -> 符号写错了
引用错误:ReferenceError -> 没有创建就去使用
类型错误:TypeError -> 使用了不是自己的方法,
最典型的:就是你们经常会undefined.xxx或者null...
范围错误:RangeError -> 只有一个API会碰到:数字.toFixed(小数位数);
小数位数的取值在0~100之间
2,只要发生了错误就会报错,会导致后续代码不执行,而app上会直接闪退;所以我们不希望报错。
错误处理:就算发生了报错,也不会抛出报错,而是给一个错误提示;然后继续运行代码。
语法:try......catch...
try{
只放入你可能出错的代码
}catch(err){
发生错误的时候才会执行
console.log(err);
}
try......catch...的性能非常差,几乎里面的代码效率会被降到最低,所以不推荐使用
可以用if...else...提前预判
开发经验:一切的用户都是坏人,都要防备(!isNaN(x)),正则:可以把用户控的死死的;
3,抛出自定义错误:throw new Error("自定义提示");
Function :函数对象:提前创建好的,以后可以反复使用的代码段。
1。创建方式:3种
1.声明方式:function 函数名 ( ) { 函数体 }
2.直接量方式:var 函数名=function { 函数体 }
3.构造方式:var 函数名=new function{ 函数体 }
2。作用域:全局作用域;局部/函数作用域
变量的使用规则:优先使用自己的,没有再去找全局的,全局也没有就报错。
3。声明提前:
在代码运行之前,程序会把所有【声明创建的变量】和【声明创建的函数】放在自己对应作用域的最顶部,赋值会留在原地;
4。按值传递:
两个变量之间的赋值,分两种情况
传递的是原始类型,修改一个变量,另一个变量是不会受到影响,因为只是复制了一个【副本】给它
传递的是引用类型,修改一个变量,另一个变量是会受到影响的,引用类型其实根本没有保存到变量中,仅仅只是保存了一个地址值;
两者用到是同一个地址值,所以会相互影响。 也叫做浅拷贝;
5。重载overload:相同的函数名,根据传入的参数不同,自动选择对应的函数执行;
为什么:为了减轻我们程序员的负担!
问题:js不支持重载
因为js中不允许多个同名函数同时存在,如果存在,最后一个函数会覆盖掉前面的所有;
解决:在【函数中】有一个对象:arguments对象,不需要我们创建,自带;
什么是arguments:是一个类数组对象 -> 想数组但不是数组 有三个相同点
1.都可以使用下标;
2.都可以使用length;
3.都可以遍历;
作用:接受住传到函数内部的所有参数,哪怕你不写任何形参;
可以做的事情:
1,实现重载:可以通过在函数内部判断arguments的不同,执行不同的操作;
2,以后有没有形参都无所谓;
3,正式开发中,有可能会将多个函数整合成一个函数;
6。匿名函数:没有名字的函数;
1.匿名函数自调:
此函数指挥执行一次,执行后自动释放,优点:自动释放-代替全局写法,提升网页的性能。
(function(){}()); -> 引用类型在还有人使用的情况下是不会自动释放的。
2.匿名函数回调:将函数作为实参,传递给了其他函数用
学习匿名函数回调的目的:
1.让我们知道了哪些是属于回调函数
arr.sort(function(a,b){return a-b;})
str.repace(reg.function(){})
btn.onclick=funtion(){}
这些东西都是前辈名规定好的,我们只能学习如何使用
2.ES-6 -一切的回调函数,都可以简化位箭头函数 =>
3.了解了一些回调函数的原理;
强调:没有名字的函数就是匿名函数,匿名函数只有自调和回调,没有自调的函数就是回调函数