2012-12-03 35 views
8

Nếu kết quả của một số phép tính javascript là một mảng gồm 10.000 phần tử, Node.js sẽ in lại phần này. Làm thế nào để ngăn chặn nó làm như vậy?Ngăn thay đổi Node.js từ đầu ra in

Cảm ơn

+0

Tôi không nghĩ có công tắc cho việc này. – xiaoyi

+0

Làm thế nào về gói nó trong một chức năng vô danh? Bạn đang thực thi câu lệnh gì? –

+0

Vì thẻ này được gắn thẻ 'console', hãy thử' $ node yourScript.js>/dev/null 2> & 1' để ẩn tất cả đầu ra –

Trả lời

14

Tại sao bạn không chỉ thêm ; null; vào biểu thức của mình?

Như trong

new Array(10000); null; 

mà in

null 

hoặc thậm chí ngắn hơn, sử dụng ;0;

0

Tôi đã nói trong nhận xét cho câu hỏi này mà bạn có thể muốn thực thi lệnh của bạn trong một chức năng ẩn danh. Giả sử bạn có một số thủ tục lặp lại trả về một số loại kết quả. Như thế này:

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; 
}); 

Điều đó cho chúng ta kết quả này:

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

Nhưng nếu bạn quấn gọi map phương pháp thành một chức năng ẩn danh tự gọi, tất cả các đầu ra bị mất:

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

Mã này sẽ cho chúng tôi kết quả này:

undefined 

vì chức năng ẩn danh không trả về bất cứ điều gì.

+1

Gắn thêm '0;' ngắn hơn nhập một hàm ẩn danh, như trong 'some_array.map (function() {return arguments; }); 0; ' – akuhn

+0

Để giảm thiểu đầu ra, bạn cũng có thể bọc nó trong' Boolean() 'hoặc' typeof() ' – holmberd

7

Gán kết quả cho một biến khai báo với var. Câu hỏi var luôn trả về undefined.

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

> var a = new Array(10) 
undefined 
1

Bạn có thể bắt đầu REPL và thay đổi bất kỳ điều gì làm phiền bạn. Ví dụ: bạn có thể yêu cầu không in undefined khi biểu thức không có kết quả. Hoặc bạn có thể bọc các đánh giá của các biểu thức và ngăn chặn chúng từ trả lại kết quả. Nếu bạn thực hiện cả hai việc này cùng một lúc, bạn sẽ giảm REPL hiệu quả xuống 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

Nút sử dụng kiểm tra để định dạng giá trị trả lại. Thay thế kiểm tra bằng một hàm chỉ trả về một chuỗi rỗng và nó sẽ không hiển thị bất cứ thứ gì.

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

Các vấn đề liên quan