2015-10-14 36 views
2

我想知道函數是否是noop。我正在尋找一個內置的方法,如angular.isNoop(),但找不到任何東西。有什麼區別NOOP?是否可以告訴AngularJS中的noop函數?

+0

好吧,如果你從共享位置獲得noop,它們都包含相同的功能,因此可以進行完全相同的檢查。否則,你只能看看函數的.toString()。 –

回答

2

noop是一個簡單的函數,它不包含任何操作。您可以使用===

來測試特定的noop功能。

console.log(x === angular.noop); 

將打印true,如果x是從角分配空操作,但如果x使用jQuery的從該空操作,這是不行的。

檢查變量是否看起來像noop。您只需要查看函數字符串是否以{}結尾。你可以嘗試這樣的事情。

console.log(angular.isFunction(x) && /\{\}$/.test(x.toString())); 

上面應該工作,即使在代碼被縮小。

1

noop函數的名稱就像任何其他函數一樣。這個名字是noop。因此,您只需撥打電話即可查看:

var theFunction = angular.noop; 
theFunction.name === 'noop' 
2

這不是一個典型的任務,它不太可能會有一個框架。

function isNoop(fn) { 
    var trimRegex = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; 

    try { 
    return !fn.toString().match(/{([\s\S]*)}$/)[1].replace(trimRegex, ''); 
    } catch (e) { }; 
} 

當然,它不檢查函數內的noop語句。 trimRegex的積分轉到jQuery。

+0

這是一個jQuery功能?像'$ .isNoop()'? – cgTag

+0

@ThinkingMedia Nope。但這是我用於修剪的正則表達式,它最初屬於$ .trim。 – estus

相關問題