AngularJs angular.identity和angular.noop詳解


angular.identity

函數返回本身的第一個參數。這個函數一般用於函數風格。

----------以上是官網對該接口的說明,只能說這個文檔寫得也太二,讓人完全看不懂。要理解它的用途,可直接看以下代碼:

function getResult(fn, input) {
    //其實我們可以直接這樣寫:
    //return fn(input); 但這樣寫有個問題,如果傳入的fn參數不是一個function類型,會導致出錯。
    //官方推薦的寫法如下:
  return (fn || angular.identity)(input);//這里如果fn參數為空值,使用angular.identity,那么當傳入的第一個參數不是function類型時,相當於第一個參數是function(input){return input}
};
//等同於如下寫法
function getResult(fn, input) {
  if(angular.isFunction(fn)){
      return input;
  }
  return fn(input);
};
getResult(function(n) { return n * 2; }, 21);   // returns 42
getResult(null, 21);                            // returns 21
getResult(undefined, 21);                       // returns 21

 

 

 

angular.noop

一個不執行任何操作的空函數。這個函數一般用於函數風格。

------------------

官網的api說明,依然是簡潔風,不管你看不看得懂。不過這里如果你了解了jquery.noop()函數,這里就容易理解了,因為他們兩個的用法是一樣樣的

var getResult = function (fn, val) {
    //這里如果直接寫為
    //return fn(val); 
    //也不會出錯,但如果傳入的第一個參數為空,則會出錯。
  return (fn || angular.noop)(val);//這樣寫,如果傳入的值不是函數,也不會出錯
};
var firstResult = getResult(function(input){console.log(input);}, 3);//6
var secondResult = getResult(null, 3);//undefined
var thirdResult = getResult(undefined, 3);// undefined

 


免責聲明!

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



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