需要内置库或只需调用〜<library>之间的差异

时间:2016-10-10 08:47:47

标签: javascript node.js

我注意到在Nodejs中我可以调用任何内置库而不需要它。而不是:

var assert = require('assert');
assert.deepEqual(...);

我可以做以下事情:

~assert.deepEqual(..);

节点文档中解释了这种语法的位置? 我认为它更好地将自定义库需求与内置库分开,使得需求部分更小,但我真的很想知道,这是否有任何官方文档? 它是否优于nodejs中通常的require方法? 有没有办法将它用于自定义库?

1 个答案:

答案 0 :(得分:2)

该语法并非特定于Node,它只是JavaScript中的Bitwise NOT运算符。

该语法的作用是将函数计算为表达式并调用它。

基本上,它与IIFE一样,以稍微复杂的方式。

&#13;
&#13;
// these are functionally the same
(function() {
  console.log('Called!');
})()

~function() {
  console.log('Me too!');
}()
&#13;
&#13;
&#13;

此外,您必须使用require来提供您工作的代码。在没有require的情况下它可以在Node REPL中工作,因为核心模块在那里是全局的。但是,这也意味着使用~是多余的,因为您可以直接调用全局函数。