美文网首页
关于JavaScript中函数的总结

关于JavaScript中函数的总结

作者: Yanzery | 来源:发表于2018-10-25 20:32 被阅读0次

    函数的定义

    1.直接定义

    function abs(x) {
        if (x >= 0) {
            return x;
        } else {
            return -x;
        }
    }
    

    函数内部的语句在执行是,一旦执行到return时就执行完毕并将结果返回。如果没有return语句,函数执行完毕后也会返回结果,只是结果是undefined。

    由于函数是一个对象,所以函数名可以视为指向该函数的变量。函数名可以保存在变量,对象,数组中。

    函数还可以被当做参数传递给其他函数,函数也可以返回函数,函数拥有方法。

    2.声明式定义

    var abs = function (x) {
        if (x >= 0) {
            return x;
        } else {
            return -x;
        }
    };
    

    将匿名函数赋值给了变量,通过变量可以调用该函数。

    函数的调用

    调用一个函数会暂停当前函数的执行,传递控制权和参数给新函数。除了声明的参数,函数还接收两个参数this和arguments。【this的值取决于函数的调用模式】

    函数的调用模式

    1. 方法调用
    2. 函数调用
    3. 构造器调用
    4. apply调用
    1.方法调用模式

    当函数保存为对象的一个属性时,称为方法,当方法被调用是,this绑定到该对象。该方法可以用this来访问自己所属的对象,所以能从对象中取值或对对象进行修改。
    通过this取得他们所属对象的上下文的方法称为公共方法。

    2.函数模式的调用

    当函数不是一个对象的属性时就是被当做一个函数来调用,this被绑定到全局。
    解决方案:在函数内把this赋值给变量that

    3.构造器模式

    如果函数前面带上new调用,会创建一个连接到该函数prototype成员的新对象,this会被绑定到这个新对象上

    4.Apply调用

    apply构建一个参数数组传递给调用函数,apply方法接收两个参数,第一个是绑定this的值,第二个是参数数组,可以自己选择this的值

    调用函数时,按顺序传入参数即可,由于JavaScript允许传入任意个参数而不影响调用,因此传入的参数比定义的参数多也没有关系,虽然函数内部并不需要这些参数;传入的参数比定义的少也没有问题,但由于收到的参数为undefined,计算结果为NaN,要避免收到undefined,可以对参数进行检查。

    arguments

    arguments只在函数内部起作用,并且永远执行当前函数的调用者传入的所有参数,类似Array,拥有length属性。

    返回

    当函数结束时,会把控制权交给调用该函数的程序。
    return语句使函数提前返回,当return被执行时,函数立即返回而不再执行余下的语句。
    一个函数总会返回一个值,如果没有就默认返回undefined。
    如果函数调用是在前面加上new,且返回值不是一个对象,则返回this

    异常

    利用arguments可以获得调用者传入的所有参数,即使函数不定义参数,也可以拿到参数的值;而实际上arguments最常用语判断传入参数的个数

    rest参数

    相关文章

      网友评论

          本文标题:关于JavaScript中函数的总结

          本文链接:https://www.haomeiwen.com/subject/ifzctqtx.html