1. 程式人生 > >function函數

function函數

創建 宋體 bsp 初始化 actions 用法 script 只有一個 fine

一:function函數基礎理解

函數實際上是對象,每個函數實際上都是 function類型的實例。而且與其他引用類型一樣具有屬性和方法。函數名實際上是一個指向內存堆中某個函數對象的指針。

定義函數的方式

1.函數聲明:

function sum(num1,num2){
return num1+num2;            
}

2.函數表達式:

var sum=function(num1,num2){
return num1+num2;
};

定義了一個變量sum並將其初始化為一個函數,註意到function關鍵字後面並沒有函數名,這是因為在使用函數表達式定義函數,沒必要使用函數名,通過變量 sum即可引用函數。還要註意函數末尾有個分號,就像聲明其他變量一樣。

Arrow Function(箭頭函數):

箭頭函數,顧名思義就是用箭頭(=>來定義的函數,不會用到關鍵字‘function’),例如:

let sum = (a, b)=> {return a + b;}

效果等同於:

var sum = function(a, b){return a + b;} 

但是,事實上上面兩個function存在很多不同。

箭頭函數的定義形式有很多種,具體的有:

1: 什麽情況下都可以型

let sum = (a, b)=>{return a + b;}

這種是最常用,最通用的形式。

2: 只有一個參數型

let self = num1 => {return num1;}

可以看到相對第一種定義的區別是:沒有用()包圍參數. 這種形式只可以在這種情況下用。

3: 沒有參數型

let functionA = ()=> {return ‘hehe‘;}

當沒有參數時,必須要有‘()‘。

4: 兩個參數及其以上型


let sum = (a, b) => {return a + b;}

當有兩個及其以上的參數時,也必須要用‘()’把參數括起來。

5:沒有return&&沒有{}

let sum = (a, b) => a + b;

你可以同時不給return關鍵字和{},效果`等同`於上面的第4種情況

6: 沒有return && 有{}

let sum = (a, b)=> {a + b;}

這種情況不等於第5種,這種情況下`‘a+b‘`並不會作為這個函數的返回值,如果你調用這個函數,得到的結果`undefined’`

7: 有return && 沒有{}

let sum = (a, b)=> return a + b;

(註明,以上的第5,6,7點針對的是函數方法體的部分,不論函數參數是幾個,結果沒有區別;同樣的,第2,3,4點針對的是函數的參數部分,不論函數的方法體怎麽寫,對結果沒有影響。)

constructor構造函數屬性:

定義和用法

constructor 屬性返回對創建此對象的數組函數的引用。

語法

object.constructor

例子 1

我們將展示如何使用 constructor 屬性:

<script type="text/javascript">

var test=new Array();

if (test.constructor==Array)
{
document.write("This is an Array");
}
if (test.constructor==Boolean)
{
document.write("This is a Boolean");
}
if (test.constructor==Date)
{
document.write("This is a Date");
}
if (test.constructor==String)
{
document.write("This is a String");
}

</script>

輸出:

This is an Array

例子 2

我們將展示如何使用 constructor 屬性:

<script type="text/javascript">

function employee(name,job,born)
{
this.name=name;
this.job=job;
this.born=born;
}

var bill=new employee("Bill Gates","Engineer",1985);

document.write(bill.constructor);

</script>

輸出:

function employee(name, job, born)
{this.name = name; this.job = job; this.born = born;}

function函數