javascript 小實例,求和的方法sumFn


新年第一記,從這里開始,先來個簡單的!去年的知識梳理留下了很多尾巴,原因有很多(知識儲量不足,懶了,項目多...) lg:都是借口~   好吧,我承認,這都是借口,今年一定把尾巴清干凈!

下面要寫的是知識梳理的第一個案例:

  1. 寫一個求和的方法sumFn,不管傳遞的參數有什么,都能將最終的和算出來,並且返回給函數外部使用。(要求:一個參數都不傳默認結果為0,對於傳遞的非正常數字的參數不與累加操作);

這個案例主要要考察的知識點是 arguments 參數,來給個特寫,什么意思呢?

arguments 參數是一個比較特殊的對象,是當前函數的一個內置屬性,它非常想Array,但卻不是Array  lg:說的什么,還是不懂~  額,好吧,例子勝過一切雄辯,咱們舉幾個栗子來看看:

 

function abc(a,b,c){
       //看看arguments是什么
	console.log(arguments);	
}

abc(1,2,3)  ;  //[1,2,3] 這不是數組嗎 


function abc(a,b,c){
       //看看arguments是什么類型的
	console.log(typeof arguments)	
}

abc(1,2,3)  ;  //object   這是對象,不是數組

 

看看,是不是有點意思,似數組非數組  lg:那它怎么用呢~  這個問題問的好,看下面代碼:

function abc(a,b,c){
	var len = arguments.length;
	console.log(len);
	console.log(arguments[0]);
	console.log(arguments[1]);
}
abc(1,2,3); // 3 , 1 , 2

//長度為3,第一個值為1,第二個值為2...  看來是具有對應關系的

lg:就只有這2下子?一點都不好玩~   呵,你還急了,當然不只這兩下子啊,它有一個非常實用的功能,就是在函數中,無需明確指出參數名,arguments能直接訪問它,你說屌不屌,耳聽為虛,眼睛為使:

function abc(){
	var a = arguments;
	var num = arguments[0] + arguments[1] + arguments[2]; //這里可以用循環,為方便查看,拆開了寫,你懂的
	console.log(num);
}
abc(1,2,3); // 6  說明可以獲取

//正常來說,函數沒有參數,應該是要報錯的,如果能成功運行,說明它具備這個神級

lg:果然了得啊,那它還有沒有其他的吊炸天技能呢? 當然有啦!arguments對象中有一個非常有用的屬性:callee。arguments.callee返回此arguments對象所在的當前函數引用。在使用函數遞歸調用時推薦使用arguments.callee代替函數名本身。舉個栗子:

function abc(a){
  if(a==1){
	return 1;
  } 
  return a + arguments.callee(--a);
}
		
var mm = abc(10);
console.log(mm); // 55

//arguments.callee(--a) 執行了遞歸調用,這樣就完成了1~9的累加

看到這里,上面說的例子應該就不難寫了吧,來跟着我左手右手一個慢動作:

 

function sumFn(){
  var arg = arguments;
  var sum = 0;
  if(arg == '' || arg == ' ' || arg ==null){
    sum = 0;
  }else{
    for(var i=0;i<arg.length;i++){
      if(isNaN(arg[i]) || arg[i] == '' || arg[i] ==' '){
        sum = sum;
      }else{
        sum +=arg[i];	
      }
    }
  }			
  return sum;
}

var  num1 = sumFn(2) + sumFn(3);
console.log(num1);  //5

var num2 = sumFn(2,3,4);
console.log(num2);  //9

var num3 = sumFn();
console.log(num3);  //0
var num4 = sumFn(1,'e',6);
console.log(num4);  //7

 

到這里,不知道你對這個例子理解了沒有,  lg: 這么好的東西,兼容性怎么樣呢?  哈哈,這么吊炸天的東西,兼容性還特別的好,你說氣不氣人,經測試,支持所有瀏覽器!

好了,它是對象,它也有對象,但是我還沒有對象,嗚嗚嗚~~~,我要去找對象去了!

行文倉促!有理解的不正確的或者是遺漏的東西,萬望批評指正!不勝感激!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM