angular.identityjquery
函數返回自己的第一個參數。這個函數通常用於函數風格。api
----------以上是官網對該接口的說明,只能說這個文檔寫得也太二,讓人徹底看不懂。要理解它的用途,可直接看如下代碼:ide
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函數
一個不執行任何操做的空函數。這個函數通常用於函數風格。oop
------------------spa
官網的api說明,依然是簡潔風,無論你看不看得懂。不過這裏若是你瞭解了jquery.noop()函數,這裏就容易理解了,由於他們兩個的用法是同樣樣的code
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