是否可以判断AngularJS中是否有noop功能?

时间:2015-10-14 18:25:35

标签: javascript angularjs

我希望能够判断一个函数是否为noop。我正在寻找一个内置的方法,如angular.isNoop(),但找不到任何东西。是否有任何区别noop?

3 个答案:

答案 0 :(得分:2)

noop函数的名称与任何其他函数一样。该名称为noop。因此,您只需致电:

即可查看
var theFunction = angular.noop;
theFunction.name === 'noop'

答案 1 :(得分:2)

noop只是一个不包含任何操作的函数。您可以使用===

测试特定的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。