2012-12-03 17 views
8

JavaScriptの計算結果が10,000要素の配列の場合、Node.js replはこれを出力します。どのようにしてそれを防ぐのですか?Node.jsの出力が印刷されないようにする

おかげで

+0

私はこのためのスイッチがないと思います。 – xiaoyi

+0

匿名関数でラップするのはどうですか?どのような声明を出していますか? –

+0

これは 'console'というタグがついているので、' $ node yourScript.js/dev/null 2>&1'を試してみてください。 –

答えて

14

; null;を式に追加してみませんか?

null 

またはさらに短いを印刷

new Array(10000); null; 

のよう

varで宣言された変数に結果を割り当て;0;

0

私はすでにあなたが匿名関数であなたのコマンドの実行をラップすることをお勧めしますこの質問へのコメントで述べています。何らかの結果を返すいくつかの繰り返し手順があるとしましょう。このように:

私たちは、この出力できます
var some_array = [1, 2, 3]; 

some_array.map(function(){ 

    // It doesn't matter what you return here, even if it's undefined 
    // it will still get into the map and will get printed in the resulting map 
    return arguments; 
}); 

[ { '0': 1, 
    '1': 0, 
    '2': [ 1, 2, 3 ] }, 
    { '0': 2, 
    '1': 1, 
    '2': [ 1, 2, 3 ] }, 
    { '0': 3, 
    '1': 2, 
    '2': [ 1, 2, 3 ] } ] 

をしかし、あなたは自己呼び出す匿名関数にmapメソッド呼び出しをラップした場合、すべての出力は失わ:

(function(){ 
    some_array.map(function() { 
     return arguments; 
    }); 
})(); 

このコードでは、次の出力が得られます。

undefined 

匿名関数は何も返さないためです。

+1

'0;'を付けることは 'some_array.map(function(){return arguments; }); 0; ' – akuhn

+0

出力を最小限に抑えるために、' Boolean() 'または' typeof() 'でラップすることもできます。 – holmberd

7

を使用します。 varステートメントは常にundefinedを返します。

1

REPLを自分で開始し、あなたを悩ますものを変更することができます。たとえば、式に結果がない場合は、undefinedを表示しないように指示できます。あるいは、式の評価をラップし、結果を返さないようにすることもできます。これらの両方を同時に実行すると、REPLを効果的にRELに減らします。

node -e "var vm = require('vm'); require('repl').start({ignoreUndefined: true, eval: function(cmd, ctx, fn, cb) {var err = null; try {vm.runInContext(cmd, ctx, fn);} catch (e) {err = e;} cb(err);}})" 
4

ノードは、戻り値をフォーマットするためにinspectを使用します。 inspectを、空の文字列を返すだけの関数に置き換えると、何も表示されません。

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

関連する問題