我希望能够判断一个函数是否为noop。我正在寻找一个内置的方法,如angular.isNoop(),但找不到任何东西。是否有任何区别noop?
答案 0 :(得分:2)
noop函数的名称与任何其他函数一样。该名称为noop
。因此,您只需致电:
var theFunction = angular.noop;
theFunction.name === 'noop'
答案 1 :(得分:2)
noop只是一个不包含任何操作的函数。您可以使用===
例如;
console.log(x === angular.noop);
如果x
从Angular分配noop,则会打印为true,但如果x
使用jQuery中的noop,则无效。
检查变量是否看起来像一个noop。您只需要查看函数字符串是否以{}
结尾。你可以尝试这样的事情。
console.log(angular.isFunction(x) && /\{\}$/.test(x.toString()));
即使代码被缩小,上述内容也应该有效。
答案 2 :(得分: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。