js函數知識點(一)
一、函數聲明的方式
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]); 9else 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函數知識點(一)