阻止Node.js重新打印输出

Nic*_*ick 14 javascript node.js read-eval-print-loop

如果某些javascript计算的结果是10,000个元素的数组,则Node.js repl将其打印出来.我该如何阻止它这样做?

谢谢

aku*_*uhn 23

你为什么不追加; null;你的表达?

如在

new Array(10000); null;
Run Code Online (Sandbox Code Playgroud)

打印

null
Run Code Online (Sandbox Code Playgroud)

甚至更短,使用 ;0;


Joh*_*yHK 8

将结果分配给声明的变量var. var陈述总是回归undefined.

> new Array(10)
[ , , , , , , , , ,  ]

> var a = new Array(10)
undefined
Run Code Online (Sandbox Code Playgroud)


Ran*_*ndy 6

节点使用检查来格式化返回值。用仅返回一个空字符串并且不会显示任何内容的函数替换inspect。

require('util').inspect = function () { return '' };


Rob*_*ert 5

您可以自己启动 REPL 并更改任何让您烦恼的内容。例如,您可以告诉它undefined当表达式没有结果时不打印。或者您可以包装表达式的计算并阻止它们返回结果。如果您同时执行这两件事,则可以有效地将 REPL 简化为 REL:

node -e '
    const vm = require("vm");
    require("repl").start({
        ignoreUndefined: true,
        eval: function(cmd, ctx, fn, cb) {
            let err = null;
            try {
                vm.runInContext(cmd, ctx, fn);
            } catch (e) {
                err = e;
            }
            cb(err);
        }
    });
'
Run Code Online (Sandbox Code Playgroud)


Rob*_*ert 5

Javascript 有void专门针对这种特殊情况的运算符。您可以将它与任何表达式一起使用以丢弃结果。

> void (bigArray = [].concat(...lotsOfSmallArrays))
undefined
Run Code Online (Sandbox Code Playgroud)