JavaScript学习笔记-Function
It has been 1485 days since the last update, the content of the article may be outdated.
定义函数
方法1
javascript
function abs(x) { |
function
指出这是一个函数定义;abs
是函数的名称;(x)
括号内列出函数的参数,多个参数以,分隔;{ ... }
之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句。
函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。
因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。
- 如果没有return语句,函数执行完毕后也会返回结果,只是结果为
undefined
。
方法2
javascript
var abs = function (x) { |
和第一种形式等价,末尾要加 ;
。
在这种方式下,function (x) { ... }
是一个匿名函数,它没有函数名。
但是,这个匿名函数赋值给了变量abs
,所以,通过变量abs就可以调用该函数。
调用函数
javascript
abs(9)//9 |
传入多余的参数也不会报错
javascript
abs(9,'hjh')//9 |
对于缺少参数,此时abs(x)
函数的参数x将收到undefined
,计算结果为NaN
。
arguments
在函数内部获取参数列表,即使存在多余参数。
javascript
function foo(x) { |
结果是:
plaintext
x = 10 |
利用arguments,你可以获得调用者传入的所有参数。
也就是说,即使函数不定义任何参数,还是可以拿到参数的值:
javascript
function abs() { |
rest
ES6标准引入了rest参数,获取除了已定义参数之外的参数
javascript
function foo(a, b, ...rest) { |
rest参数只能写在最后,前面用…标识,从运行结果可知,传入的参数先绑定a、b,多余的参数以数组形式交给变量rest,
所以,不再需要arguments我们就获取了全部参数。
如果传入的参数连正常定义的参数都没填满,也不要紧,rest参数会接收一个空数组(注意不是undefined
)。
tips
一个return
语句的坑需要注意 ,JavaScript在编译时会自动加上;
。
javascript
function foo() { |
正确写法:
javascript
function foo() { |
exercise
1.求任意长度数组的和
javascript
function sum(...rest) { |
2.定义一个计算圆面积的函数area_of_circle(),它有两个参数:
- r: 表示圆的半径;
- pi: 表示π的值,如果不传,则默认3.14
javascript
function area_of_circle(r, pi) { |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment