2013-06-12 32 views
7

Vì vậy, tôi đã được chơi xung quanh với REPL Node.js và thư viện Underscore khi tôi nhận thấy một cái gì đó rất lạ. Nếu tôi require("underscore"), biến số _ được đặt trên toàn cầu (hiển nhiên). Sau đó, khi tôi cố gắng chạy một lệnh đơn giản như console.log(_.isEmpty) nó in [Function] (một lần nữa, rõ ràng). Tuy nhiên, sau khi chạy console.log(_) ngay sau đó, nó in [Function] vì biến _ được đặt thành _.isEmpty.Trong REPL của Node.js, tại sao điều này lại xảy ra?

Tại sao điều này thực hiện việc này? Nếu tôi chạy cùng một mã từ một tập tin js điều này không xảy ra. Đây có phải là một điều Node bình thường hay là một lỗi tổng thể?

FYI: Node v0.10.10

+0

Xem thêm [Sử dụng mô-đun gạch với Node.js] (http://stackoverflow.com/q/5691901/1048572) – Bergi

Trả lời

13

REPL Node luôn đặt _ đến kết quả của dòng cuối cùng.

> 2 
2 
> _ 
2 
> 2+2 
4 
> _ 
4 
> 

Bạn cần phải sử dụng một định danh khác nhau:

var u = require("underscore"); 
u.isEmpty 
+0

Vì vậy, sử dụng dấu gạch dưới '.noConflict()' mode –

+0

Wow tôi vừa đọc tài liệu đầy đủ mà tôi đã tìm ra. Cảm ơn! Đoán tôi không chỉ điên rồ ... –

+1

Với Node v6.0, hành vi mặc định của '_' (gạch dưới) bị tắt khi nó được gán cho bất kỳ giá trị nào. Một thông báo cho biết "Chuyển nhượng biểu thức thành _ hiện đã tắt". – abhisekp