第三周Day5

68 阅读4分钟

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.都可以使用length3.都可以遍历;
作用:接受住传到函数内部的所有参数,哪怕你不写任何形参;
可以做的事情:
    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.了解了一些回调函数的原理;

强调:没有名字的函数就是匿名函数,匿名函数只有自调和回调,没有自调的函数就是回调函数