函数

作者: YangGui | 来源:发表于2017-01-11 18:13 被阅读0次

参考教程,廖雪峰

函数定义

通过关键字function来定义一个函数

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

js中函数也是一个对象,也可以按以下方式定义一个函数,将函数名作为一个指向该函数的变量。

var abs = function(x) {
     if (x < 0)
        return -x;
     else
        return x;
};
函数的参数 arguments

arguments是一个类似Array的数据集合,在函数内部,指向该调用该函数所传递的所有参数。
JavaScript允许传入任意个参数,传入的参数比定义的参数多也没有问题。为保证所用参数正确,在使用前可以利用arguments来获取所有传递过来的参数,对其进行参数验证。

function abs(x) { 
    if (typeof x !== 'number') {
         throw 'Not a number'; 
    } 
    if (x >= 0) { 
        return x;
     } else { 
        return -x; 
     }
}

ES6标准引入了rest参数,可以方便地获取函数定义以外的参数。

function foo(x,  y, ...rest) {
    console('x=' + x);
    console('y=' + y);
    console(rest);
}

foo(1 ,2 ,a ,royal ,100);
//x = 1
//y = 2
//Array [a , royal , 100]
foo(1);
//x = 1
//y = undefined
//Array []

rest参数只能写在最后,前面用...标识,从运行结果可知,传入的参数先绑定a、b,多余的参数以数组形式交给变量rest,所以,不再需要arguments我们就获取了全部参数。
如果传入的参数连正常定义的参数都没填满,也不要紧,rest参数会接收一个空数组(注意不是undefined)。

方法

将一个函数绑定到一个对象上,则称此函数为这个对象的方法。

var xiaoming = { 
    name: '小明', 
    birth: 1990, 
    age: function () { 
        var y = new Date().getFullYear();
         return y - this.birth; 
    }
};
xiaoming.age(); // 今年调用是25,明年调用就变成26了

要保证this指向正确,必须用obj.xxx()的形式调用!ECMA决定,在strict模式下让函数的this
指向undefined。在非strict模式下,直接调用某个对象的方法它重新指向全局对象window。

apply

要指定函数的this指向哪个对象,可以用函数本身的apply方法,它接收两个参数,第一个参数就是需要绑定的this变量,第二个参数是Array,表示函数本身的参数。

function getAge() {
    var y = new Date().getFullYear(); 
    return y - this.birth;
}
var xiaoming = { 
    name: '小明', 
    birth: 1990, 
    age: getAge
};
xiaoming.age(); // 25
getAge.apply(xiaoming, []); // 25, this指向xiaoming, 参数为空

另一个与apply()类似的方法是call(),唯一区别是:

apply()把参数打包成Array再传入;

call()把参数按顺序传入。

比如调用Math.max(3, 5, 4),分别用apply()和call()实现如下:

Math.max.apply(null, [3, 5, 4]); // 5
Math.max.call(null, 3, 5, 4); // 5

相关文章

  • Excel(三)

    AND函数 OR函数 NOT函数 IF函数 频率分析函数FREQUENCY

  • if、else if、for、while、repeat函数

    ①if函数 ②else if函数 ③for函数 ④while函数 ⑤repeat函数

  • strsplit、mapply、paste、match函数

    strsplit函数 mapply函数 strsplit函数 mapply函数 paste函数 match函数 第...

  • Oracle中常用函数(SQL)

    Oracle函授有以下几个分类:数字函数、字符函数、日期函数、转换函数、集合函数、分析函数 数字函数: 字符函数:...

  • MySQL函数

    字符函数 数字运算函数 比较运算符和函数 日期时间函数 信息函数 聚合函数 加密函数 流程函数

  • BI-SQL丨AND & OR & IN

    AND函数 & OR函数 & IN函数 AND函数、OR函数和IN函数都可以理解是WHERE函数的补充,当然也可以...

  • Python之函数

    课程大纲 函数定义 函数的参数 函数的返回值 高阶函数 函数作用域 递归函数 匿名函数 内置函数 函数式编程 将函...

  • 函数基本知识

    函数 函数的定义: def 函数名() 函数的调用:函数名() #不能将函数调用放在函数定义上方 函数的文档注...

  • 积分表——不定期更新

    基本初等函数包括: 常函数: 幂函数 指数函数 对数函数 三角函数 反三角函数 I、反函数Ⅱ、复合函数:初等函数(...

  • MySQL基本使用

    函数 常用函数 数学函数 字符串函数 日期函数

网友评论

      本文标题:函数

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