企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 1、函数也是值 JavaScript 语言将函数看作一种 值,与其它值(数值、字符串、布尔值等等)地位相同。凡是可以使用值的地方,就能使用函数。比如,可以把函数赋值给变量和对象的属性,也可以当作参数传入其他函数,或者作为函数的结果返回。函数只是一个可以执行的值,此外并无特殊之处。 由于函数与其他数据类型地位平等,所以在 JavaScript 语言中又称函数为 第一等公民。 ![](https://img.kancloud.cn/d4/70/d470c2075c86f9c80afdd51fb728b846_635x440.png) 除此以外,还可以把函数当做返回值。 ![](https://img.kancloud.cn/b7/99/b79904509076b14c667f4ab1e0d6e615_747x258.png) 也可以把函数当做另外一个函数的参数,如果一个函数当做另一个函数的参数了,那么把函数类型的参数叫做回调函数。 ![](https://img.kancloud.cn/09/b6/09b61a39a0cc8c3be6944a2acbbdac6c_700x350.png) # 2、函数也是对象 JS中处处皆对象,函数也不例外。 那么如何理解函数也是对象呢?这里主要要表达的是函数也可以使用对象那样的点语法。比如前面学习的Person.prototype; 比如在函数内部,可以使用“函数.length”来表示函数的形参个数,可以使用“函数.name”来获取当前的函数名。 ![](https://img.kancloud.cn/00/54/0054b73eec71c33af11916a3995f3a88_640x163.png) # 3、arguments对象 arguments对象,存在于函数的内部,它能够表达函数的实际参数(实参),除此以外,arguments对象还有一个属性callee,它表示函数的名字,arguments的length属性表示实参的个数。 ![](https://img.kancloud.cn/f1/4b/f14b4e3781da6ebbd3947cf981e9f878_914x239.png) 小例子:计算函数参数的和: ![](https://img.kancloud.cn/73/4f/734ff576c953ae2e718ad7977e0dcb7f_724x244.png) # 4、call、apply、bind函数 这三个函数都可以改变函数内部this的指向。 函数.call(需要指向的对象,参数1, 参数2…); 调用之后,会直接执行函数 函数.apply(需要指向的对象,[参数1, 参数2…]); 调用之后,会直接执行函数 函数.bind(需要指向的对象,参数1, 参数2…); 调用之后,不会执行函数。 call方法演示: ![](https://img.kancloud.cn/6c/36/6c3642dd96bba2d4f089fb42c054d09b_907x336.png) apply方法演示: ![](https://img.kancloud.cn/5f/5f/5f5fa6824cfaf5506dad2f744b8b3da9_885x358.png) bind函数演示: ![](https://img.kancloud.cn/ba/49/ba49c938eb412f7740cf8ebb56b791ef_941x431.png) 小例子,查找数组中的最大值: ![](https://img.kancloud.cn/e7/fc/e7fcaf7b753bdd5be3976dd6d54ad8fc_717x505.png)