1. 程式人生 > >function函式

function函式

一: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;}