1. 程式人生 > >js函數知識點(一)

js函數知識點(一)

scrip article 函數 返回值 解決方案 net 匿名 res 定義

一、函數聲明的方式

function 函數名(參數列表){ 函數體; return 返回值} 問題:會被聲明提前

給出以下解決方案:

var函數名=function (參數列表){ 函數體; return 返回值} 不會被聲明提前

var 函數名=new Function("參數1","參數2",...,"函數體;...")

強烈不推薦使用,因為這種方式會導致解析兩次代碼,影響性能。

有關這三種聲明方式的區別,可以看這篇博文學習:http://blog.csdn.net/ll641058431/article/details/52319737

  

二、重載

js語法默認不支持重載,最後創建的會覆蓋之前創建的所有

解決方法:arguments

 1 function pay(                   ){
 2      //arguments[         ,         ].length
 3               //     0           1
 4      if(arguments.length==0)
 5       console.log("手機支付...");
 6      else if(arguments.length==1)
 7       console.log(
 8         "現金支付...收款金額:"+arguments[0]);
 9
else 10 console.log( 11 "刷卡結賬...卡號:"+arguments[0]); 12 } 13 14 pay();//手機支付... 15 pay(100);//現金支付... 16 pay("6553 1234","123456");//刷卡結賬...

也可直接用 arguments 做參數不確定的操作

1 function add(){
2       var sum=0;
3       for(var i=0;i<arguments.length;i++){
4         sum+=arguments[i];
5 } 6 return sum; 7 }

三、匿名函數

創建時不指定函數名

為什麽:

1. 節約內存

2. 劃分臨時作用域

何時: 只要一個函數使用後,希望立刻釋放時

如何:

1. 回調(callback): 將一個函數,交給另一個函數去自動調用。

比如: arr.sort(function(a,b){return a-b;})

xhr.onreadystatechange=function(resText){}

btn.onclick=function(){}

str.replace(/正則/,function(kw){return xxx});

2. 自調: 定義函數後,立刻調用自己

何時: 幾乎所有自定義的腳本,都要放在匿名函數中

為什麽: 避免使用全局變量,避免全局汙染

如何:

1. (function(...){...})()

2. +function(...){...}()

(function(){
      var start=new Date();
      alert("開始加載網頁內容...at:"+start.toLocaleTimeString());
    })();

  

js函數知識點(一)