js實例教程-js函數類型介紹之定義函數的幾種方式

发布时间:2018-11-23 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了js實例教程-js函數類型介紹之定義函數的幾種方式脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小寶典致力於為廣大程序猿(媛)提供高品質的代碼服務,請大家多多光顧小站,小寶典在此謝過。

定義函數的幾種方式:

一函數聲明,顯示定義函數

 function fn(x){ return x+1; }

二函數表達式

 VAR fn = function(x){ return x+1} 

三使用 Function() 構造函數定義

 var f = Function(x){ return x+1} 

四函數聲明和函數表達式的區別:

解釋器會率先讀取函數聲明,並使其在執行之前可以訪問,而使用表達式則必須等到解析器執行到它所在的代碼行,才會真正被解釋執行,函數聲明會正常執行

 alert (sum (10 ,10)); function sum(a  ,b){   return a+b; }

下述代碼會報錯:

 alert (tyPEof sum); alert(sum(10 , 10)); var sum  = function (a  ,b){   return a+b; } //↑報錯,原因在於函數位於一個初始化語句中,不是一個函數聲明,不會被提前,而只會把var sum提前,用typeof操作符顯示sum是undefined,所以報錯

五函數的內部屬性:函數內部,有兩個特殊的對象,arguments和this

1.arguments是個類數組對象,包含着傳入函數的所有參數,有一個叫callee的屬性,屬性值是一個指針,指向擁有這個arguments對象的函數本身

 function foo (){ var a =arguments.callee;      return a.toString(); } foo(); /* 返回結果:   "function sum(){   var a =arguments.callee;        return a.toString();   }" */

2. this:簡單來說,this指的就是函數執行的環境對象,在哪個對象中執行,this就指哪個對象

3.3. ES5規範了函數的另一個屬性:caller,這個函數屬性指的是調用當前函數的函數

 function inner(){       console.LOG(inner.caller); }  function outer(){      inner(); }  outer();     //返回:function outer(){inner();}
4. length屬性:表示函數希望接受的參數個數
 function add(a ,b ,c){     return a+b+c; } add.length;  //3

5. PRototype屬性是一個對象,是通過調用構造函數而創建的一個對象,包含可以由特定類型的所有實例共享的屬性和方法

6. 函數的兩個方法:call()和apply(),作用都是在特定的作用域中調用函數,實際上就是設置函數內部的this值

1). call():與apply()方法類似,區別在接收參數的方式不同,參數必須逐個列出來。

  2). apply():接收兩個參數,一個是函數運行的作用域,另一個是參數數組,可以是數組,也可以是arguments這個類數組對象

 function sum(a , b){   return   a+b; }  function callSum(a  ,  b){     return sum.apply(this , arguments); }//第二個參數是一個類數組對象arguments  function callSum1(a  , b){     return sum.apply(this,  [a  , b]); }    //第二個參數是一個數組 console.log(callSum(2 , 3)); //5    console.log(callSum1(3 ,5));    //8

3.) 傳遞參數並調用函數並非call()和apply()的用武之地,二者真正強大的地方是擴充函數運行的作用域

 var color = 'red'; var obj = {   color  :'blue'   } function foo(){   console.log(this.color);   }  foo();    //'red' foo.call(this);//'red' foo.call(obj);    //'blue' //最後一次調用foo()函數的執行環境變了,其中的this指向了obj對象,所以是'blue'

定義函數的幾種方式:

一函數聲明,顯示定義函數

 function fn(x){ return x+1; }

二函數表達式

 var fn = function(x){ return x+1} 

三使用 Function() 構造函數定義

 var f = Function(x){ return x+1} 

四函數聲明和函數表達式的區別:

解釋器會率先讀取函數聲明,並使其在執行之前可以訪問,而使用表達式則必須等到解析器執行到它所在的代碼行,才會真正被解釋執行,函數聲明會正常執行

 alert (sum (10 ,10)); function sum(a  ,b){   return a+b; }

下述代碼會報錯:

 alert (typeof sum); alert(sum(10 , 10)); var sum  = function (a  ,b){   return a+b; } //↑報錯,原因在於函數位於一個初始化語句中,不是一個函數聲明,不會被提前,而只會把var sum提前,用typeof操作符顯示sum是undefined,所以報錯

五函數的內部屬性:函數內部,有兩個特殊的對象,arguments和this

1.arguments是個類數組對象,包含着傳入函數的所有參數,有一個叫callee的屬性,屬性值是一個指針,指向擁有這個arguments對象的函數本身

 function foo (){ var a =arguments.callee;      return a.toString(); } foo(); /* 返回結果:   "function sum(){   var a =arguments.callee;        return a.toString();   }" */

2. this:簡單來說,this指的就是函數執行的環境對象,在哪個對象中執行,this就指哪個對象

3.3. ES5規範了函數的另一個屬性:caller,這個函數屬性指的是調用當前函數的函數

 function inner(){       console.log(inner.caller); }  function outer(){      inner(); }  outer();     //返回:function outer(){inner();}
4. length屬性:表示函數希望接受的參數個數
 function add(a ,b ,c){     return a+b+c; } add.length;  //3

5. prototype屬性是一個對象,是通過調用構造函數而創建的一個對象,包含可以由特定類型的所有實例共享的屬性和方法

6. 函數的兩個方法:call()和apply(),作用都是在特定的作用域中調用函數,實際上就是設置函數內部的this值

1). call():與apply()方法類似,區別在接收參數的方式不同,參數必須逐個列出來。

  2). apply():接收兩個參數,一個是函數運行的作用域,另一個是參數數組,可以是數組,也可以是arguments這個類數組對象

 function sum(a , b){   return   a+b; }  function callSum(a  ,  b){     return sum.apply(this , arguments); }//第二個參數是一個類數組對象arguments  function callSum1(a  , b){     return sum.apply(this,  [a  , b]); }    //第二個參數是一個數組 console.log(callSum(2 , 3)); //5    console.log(callSum1(3 ,5));    //8

3.) 傳遞參數並調用函數並非call()和apply()的用武之地,二者真正強大的地方是擴充函數運行的作用域

 var color = 'red'; var obj = {   color  :'blue'   } function foo(){   console.log(this.color);   }  foo();    //'red' foo.call(this);//'red' foo.call(obj);    //'blue' //最後一次調用foo()函數的執行環境變了,其中的this指向了obj對象,所以是'blue'

覺得可用,就經常來吧!Javascript技巧 腳本寶典 歡迎評論哦! js技巧,巧奪天工,精雕玉琢。小寶典獻醜了!

脚本宝典总结

以上是脚本宝典为你收集整理的js實例教程-js函數類型介紹之定義函數的幾種方式全部内容,希望文章能够帮你解决js實例教程-js函數類型介紹之定義函數的幾種方式所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。