【Day17】期间限定:函式的参数

函式会将参数传入函式里面,让它们成为函式里的变数,让程序码去做运算。参数只能在函式里刷存在感(期间限定?),一旦函式执行完毕,就会被消失。(Mission Impossible音乐响起......)

arguments物件

一般的函式长成这个样子:

const multiply = function funA(numA, numB){
	return numA + numB;
}
//呼叫multiply()函式
multiply(1,2)  //2

plus(1,2),小括号中的1跟2就是参数,传到multiply这个函式,numA就是1,numB就是2,传出来的值就是2。

JavaScript呼叫函式的时候,不会对函式的数量做检查,超过函式小括号里面函式数量的参数,没有配对到的就会被以undefined定义。如果呼叫函式的时候,参数数量少於函式小括号里面定义的数量,也会以undefined表示。

如果担心呼叫函式的时候,传入函式的参数少於函式定义的参数数量,没有配对到的参数会变成undefined,也可以帮参数指定预设值。

const plus = function funA(numA = 0, numB = 0){
	return numA + numB;
}
//呼叫plus()函式
plus(5)  //2

当函式被呼叫的时候,会生成一个arguments物件,里面的放的就是呼叫函式的时候,小括号里面放的「参数」。

argruments物件并非阵列,它是带有「索引」特性的物件,拥有length属性,而且只能在函式里面使用。这意味着:就算我们呼叫函式时带入的变数数量超过原本函式设定的数量,也可以利用回圈把超过预设数量的变数捞出来运算,还可以透过使用arguments物件让函式能够呼叫数量不定的引数

const plus = function (numA,numB){
	var num = 0;
  console.log(arguments.length);   
	for( var i = 0;  arguments.length > i; i++ ){
		num += arguments[i];
	}	
	return num;
}
//呼叫plus()函式
plus(1,2,3,4,5,6)  
//console.log(arguments.length)会跑出6
//然後参数相加的部分会跑出21

其余参数(...args)

前面提到的箭头函式,并没有arguments物件可以使用,但是ES6提供了「其余参数」(rest parameter)让箭头函式来使用。

只要在函式的小括号中以...三个点开头,後面接上参数名称,就变成了「其余参数」(rest parameter),所有参数都存在里面。而且「其余参数」是一个阵列,所有阵列的方法它都可以使用。

const plus = (...args) => {
	var num = 0;
  console.log(args.length);   
	for( var i = 0;  args.length > i; i++ ){
		num += args[i];
	}	
	return num;
}
//呼叫plus()函式
plus(1,2,3,4,5,6)
//console.log(args.length)会跑出6
//然後参数相加的部分会跑出21

arguments物件与 ...args其余参数都让函式在取用参数的时候,不用拘泥於原本定义的参数数量,让参数的使用有更大的弹性与扩充性。


<<:  桦泽紫苑:The power of input

>>:  Dungeon Mizarka 005

Day2:How to use comments,octothorpe and variable in Python

Comment is a very important part in programing Com...

D14.5 - 用 Swift 和公开资讯,打造投资理财的 Apps { 来个中场回亿番 }

这一篇来个中场回亿 D1~D2: 完成 Xcode 基本架设 D3~D6: 完成公司基本资料的拉取 ...

DAY15 注册按钮功能实现

if isinstance(event, PostbackEvent): # 如果有normal讯息...

[火锅吃到饱-5] 北泽寿喜烧 - 台中大里店

为了可以很顺利的拍完北泽的用餐体验,练习了20几次後,才轮到它。(这样就知道我有多在乎北泽了吧~) ...

Day 3 ROS 安装

今天要来说明 ROS 怎麽安装,今天会分成 Ubuntu18.04 跟 Windwos 两个版本来讲...