2011-12-10 42 views

Trả lời

24

Chỉ cần viết "hello world"; và nhấn enter ... nó sẽ trả lại "hello world" thay vì undefined, do đó không undefined được hiển thị. console.log trả về undefined và cũng ghi lại các đối số vào bảng điều khiển để bạn nhận được nhiều thư.

+0

Cảm ơn Esailija. Khi tôi không nhập bất kỳ chức năng hoặc ký tự nào; sau đó cũng "không xác định" được hiển thị. Bạn có thể vui lòng giải thích những gì đang xảy ra dưới mui xe? –

+0

@SandeepGB, bạn mong đợi điều gì khi không có bất kỳ đầu vào nào? : P Giá trị trả về của việc không nhập bất cứ thứ gì có ý nghĩa nhất là 'undefined' – Esailija

+2

Tôi đang cố hiểu những gì đang diễn ra. alessioalex đã trả lời câu hỏi của tôi :) –

36

Hàm JavaScript luôn trả về thứ gì đó. Nếu bạn không chỉ định một cái gì đó để trả về trong hàm, 'undefined' được trả về theo mặc định (bạn có thể kiểm tra điều này trong Firebug).

Đừng lo lắng, điều này không ảnh hưởng đến bất cứ điều gì, bạn có thể bỏ qua nó.

+0

+1. Cảm ơn vi đa trả lơi. Có cách nào để thoát khỏi 'không xác định', cú pháp nên là gì? –

+0

Nếu bạn tạo một chương trình (ứng dụng web hoặc dòng lệnh), bạn sẽ không bao giờ bị "không xác định" đang bay, vì vậy đừng lo lắng về điều đó. – alessioalex

+0

Khi tôi không nhập bất kỳ chức năng hoặc ký tự nào; sau đó cũng "không xác định" được hiển thị. Bạn có thể vui lòng giải thích những gì đang xảy ra dưới mui xe? –

16

Như được chỉ ra bởi những người khác, hàm javascript sẽ luôn trả về không xác định nếu bạn không chỉ định bất kỳ giá trị trả lại nào. Bạn chỉ có thể bỏ qua nó. Nó sẽ không gây hại gì cả. Nhưng nếu nó gây phiền nhiễu bạn quá nhiều thì bạn có thể tắt nó trong repl. Repl có thuộc tính này ignoreUndefined được đặt thành false theo mặc định. Bạn có thể đặt nó thành true. Hãy thử điều này:

module.exports.repl.ignoreUndefined = true; 
4

Nếu bạn cần bật ignoreUndefined từ bên trong một module, bạn có thể sử dụng các dòng sau để mô phỏng AvinashB 's câu trả lời mà không cần gõ vào giao diện điều khiển của mình:

process.stdin.emit('data', "module.exports.repl.ignoreUndefined = true;\n"); 
5

Vâng, câu hỏi đã được thực hiện một vài năm trước đây, nhưng vẫn còn một cách khác để giải thích những gì đang xảy ra ở đây.

Hãy thử lệnh tiếp theo:

console.log("Hello World") || "Bye World"; 

Như chức năng đề cập console.log() lợi nhuận undefined bình thường và bạn có thể chọn một giá trị trả về tốt hơn. Vì so sánh không nghiêm ngặt (trừu tượng) xem xét undefined bằng false toán tử || cho phép bạn lựa chọn đó.

Xét rằng nó chỉ là một công cụ gỡ lỗi, điều này là không cần thiết trong sử dụng chung, nhưng giúp chúng ta hiểu rằng console màn văn bản gửi đến stdout và cũng evals lệnh và màn giá trị trả về, hoặc không xác định nếu không có đã nhận được giá trị.

+0

Hi @Melo, tôi nghĩ rằng mã này có thể được viết lại thành một console.log đẹp hơn ("Hello World") || "Tạm biệt thế giới". –

+1

Cảm ơn @Vasfed để thêm định dạng. –

+1

Đã sửa lỗi @DevidFarinelli, cảm ơn bạn. –

0

node cũng in undefinedIN CHUNG, nó hiển thị giá trị trả lại của mỗi lệnh và console.log không trả về bất kỳ thứ gì.

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