我注意到在Nodejs中我可以调用任何内置库而不需要它。而不是:
var assert = require('assert');
assert.deepEqual(...);
我可以做以下事情:
~assert.deepEqual(..);
节点文档中解释了这种语法的位置? 我认为它更好地将自定义库需求与内置库分开,使得需求部分更小,但我真的很想知道,这是否有任何官方文档? 它是否优于nodejs中通常的require方法? 有没有办法将它用于自定义库?
答案 0 :(得分:2)
该语法并非特定于Node,它只是JavaScript中的Bitwise NOT运算符。
该语法的作用是将函数计算为表达式并调用它。
基本上,它与IIFE一样,以稍微复杂的方式。
// these are functionally the same
(function() {
console.log('Called!');
})()
~function() {
console.log('Me too!');
}()

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