【Day12】能力封装--函式

函式的作用在於将一段或多段函式包装在一起,方便反覆使用,一目了然也方便维护。当需要重复执行一次计算或重复做一件事的时候,就会需要用到函式。

像这样就是一个函式:

function firstFun () {
	console.log('桃花岛的五行八卦阵');
}

函式执行前要先被定义,但是定义好的函式不会自动执行,要在程序中呼喊爱情,啊!不对!是呼叫函式,函式才会动起来!

最常见的函式宣告方式有以下三种:

  • 函式宣告(Function Declaration)
  • 函式表达式(Function Expression)
  • 透过new Function关键字建立函式

函式宣告(Function Declaration)

function 函式名称 (参数1, 参数2...){
	//do something
}
  • 用function开头,後面接着函式名称。
  • ()小括号中放的式参数,参数可以不只一个,每个参数中间以逗号 「,」隔开。
  • {}大括号中放的是执行的程序内容。

我们已可以把参数带入function中使用:

function firstFun (name) {
	console.log( name + '闯入桃花岛的五行八卦阵');
}
firstFun('郭靖')  //郭靖闯入桃花岛的五行八卦阵

函式表达式(Function Expression)

函式表达式长这个样子:

var 变数名称 = function 函式名称(){
	//do something
}

函式表达式清楚地展示了如何将一个函式储存在一个变数中,从而透过变数我们可以反覆地叫用函式。函式的名称只有在「自己函式的区块内」有效,离开这个函式的范围,函式的名称就失去了效用。

透过「变数名称()」就可以呼叫函式,所以「函式名称」不是一定要的,这种没有名字的函式在JavaScript是允许的,通常被称为「匿名函式」。

var 变数名称 = function (){
	//do something
}
var firstFun = function  (name) {
	console.log( name + '闯入桃花岛的五行八卦阵');
}
firstFun('郭靖')  //郭靖闯入桃花岛的五行八卦阵

透过new Function关键字建立函式

第三种则是透过 new关键字 + Function的方式来建立函式物件。

var 变数名称 = new Fnction ('参数','do something')

因为这种方式,每次执行都要解析字串,效能甚差,实务上很少使用。

return

对一个新手而言,刚遇到这个return实在是丈二金刚摸不着脑?return到底是要转到哪里去?

後来搞懂了,原来函式执行後,return会中止程序执行并回传一个值(value),如果没有值可以回传,则会会传undefined。

var funNoReturn = function square(num){
	num * num;
}
funNoReturn(2);
//undefined  没有回传值,所以undefined
var funReturn = function square(num){
	return num * num;
}
funReturn(2);
//4  加上retrurn之後,就有回传值了

回传值是函式输出的值,可以带入其他的程序码中继续运算。函式可以接受多个参数,但是只能回传一个值,如果没有告诉函是要回传什麽,就会回传undefined。

也可以把函式呼叫当作值来使用:

var funReturn = function square(num){
	return num * num;
}

funReturn(2) + funReturn(3);
//13

我们也可以利用return来结束函示执行,如果函式的任意一个参数无效,就提前跳出函式。无效指的是,参数不符合函式所定义的条件。

var fun = function (num){
	if(num > 5){
		return;
	}
	return num * num;
}
fun(6);  //undefined
fun(2);  //"4"

fun(6)因为num >5,参数符合if条件 ,就执行{}内程序码,return跳出了函式,回传undefined。

fun(2)因为num<5,参数不符合if条件,所以继续往下执行return num * num,回传值为4。


<<:  Day 7 网路宝石:【Lab】VPC外网 Public Subnet to the Internet (IGW) (上)

>>:  Day 12 Azure cognitive service: OCR- 光学字元辨识

铁人赛 Day26 -- 一定要知道的JQuery (二) -- 锚点动画

JQuery-锚点动画 什麽是锚点 & 锚点的作用是什麽 他是超连结的一种,可以帮助我们更快...

【第四天 - Queue 介绍】

Q1. Queue是什麽? 与 Stack 一样,是一种资料结构的概念,假设有一个容器是装马克杯的盒...

Day06 X 图片最佳化

给你五秒钟思考一下,你在日常生活中还有在使用没有任何图片,包括小小 的 Icon 也没有的网站吗?...

[30天 Vue学好学满 DAY24] Vue Router-3

router-link to 函数 指定导向,包含以下方法 <!-- 直接指定路径 -->...

DAY16 - 档案处理 - 上传前预览

接下来的范例都会以vue.js语法撰写喔! 情境 在上传图档到server前,须在前端UI上显示预览...