没有操作的JavaScript约定是什么?就像Python的pass
命令一样。
function() {}
$.noop()
,它仅调用上面的empty函数。 false
或0
的值吗? 在上下文中...所有这些工作都不会在Chrome中引发错误:
var a = 2;
(a === 1) ? alert(1) : function() {};
(a === 1) ? alert(1) : $.noop();
(a === 1) ? alert(1) : false;
(a === 1) ? alert(1) : 0;
编辑:很多人都回答:“不要这样做!更改代码结构!”这让我想起了一个帖子,有人问如何监听浏览器。他收到了许多帖子,说:“不要这样做!这很邪恶”,但是没人告诉他如何嗅探浏览器。这不是代码审查。想象一下,您正在处理无法更改的旧代码,并且如果没有传入某些函数,它将遗失一个错误。或简单地说,这就是客户想要的方式,他们正在向我付款。因此,敬请回答问题:在JavaScript中指定“无操作”功能的最佳方法是什么?
EDIT2:其中之一怎么样?
true;
false;
0;
1;
null;
最佳答案
为了回答原始问题,纯Javascript(也将在here中进行讨论)中的noop函数最优雅,最整洁的实现是 Function.prototype 。这是因为:
尽管这是一个“真正的noop”,因为大多数浏览器似乎都不执行这种方式定义的noop(从而节省了CPU周期),但可能存在与此相关的性能问题(其他人在评论中或在其他答案)。
但是,可以这么说,您可以轻松定义自己的noop函数,实际上,许多库和框架也提供noop函数。以下是一些示例:
var noop = function () {}; // Define your own noop in ES3 or ES5
const noop = () => {}; // Define in ES6 as Lambda (arrow function)
setTimeout(noop, 10000); // Using the predefined noop
setTimeout(function () {} , 10000); // Using directly in ES3 or ES5
setTimeout(() => {} , 10000); // Using directly in ES6 as Lambda (arrow function)
setTimeout(angular.noop, 10000); // Using with AngularJS 1.x
setTimeout(jQuery.noop, 10000); // Using with jQuery
以下是按字母顺序排列的noop功能(或相关讨论或Google搜索)的各种实现的列表:
AngularJS 1.x, Angular 2+ (似乎没有本地语言
实现-如上所示使用您自己的),Ember,jQuery,Lodash,NodeJS,Ramda, React (似乎没有 native 实现-如上所示使用您自己的实现),RxJS,
Underscore
底行:尽管Function.prototype是用Java语言表达noop的一种优雅方式,但是,可能存在一些与其使用有关的性能问题。因此,您可以定义和使用自己的代码(如上所示),也可以使用您可能在代码中使用的库/框架定义的代码。