2012-05-25 12 views
14
var name = "someName"; 
if(name !=null) { 
    // do something 
} 
  1. tôi ngay bây giờ đang sử dụng http://underscorejs.org/#isNull, làm thế nào tôi sẽ làm cùng sử dụng underscore.js
  2. Liệu nó đưa ra bất cứ sự cải thiện nhẹ về hiệu suất cho chức năng như vậy.

Trả lời

23

Trong gạch dưới, bạn có thể sử dụng

if(!_.isNull(name)) {} 

và ở đồng bằng Javascript, bạn nên sử dụng

if(name !== null) {} 

Bạn nên tránh các nhà điều hành bất bình đẳng lỏng != bởi vì nó gõ cưỡng chế và undefined != null sẽ trả về false.

Sử dụng Javascript đơn giản là nhanh hơn một chút vì nó không phải gọi hàm, nhưng nó sẽ không thể nhận ra và khó có thể xem xét.

Tôi không có sở thích mạnh theo cách dễ đọc, nhưng có vẻ hơi quá mức và quá mức để gọi hàm thư viện cho một lần kiểm tra đơn giản như vậy.

1

Vâng mã ban đầu của bạn là thiếu sót bởi vì nếu name là một chuỗi rỗng, false, số 0 hoặc bất kỳ giá trị falsy khác sau đó nó sẽ được coi null như xa như thử nghiệm của bạn là có liên quan.

Như một quy tắc chung, hãy gọi hàm ANY là một chi phí cần tránh nếu có thể. Trong trường hợp này, hãy gọi hàm chỉ để kiểm tra nếu giá trị là null, khi bạn có thể dễ dàng chỉ cần viết if(name === null), chỉ là ngu ngốc, IMO ...

+1

Chỉ dành cho những người sẽ đến câu hỏi này, không có "", false và 0 sẽ không khớp với giá trị rỗng, chỉ không xác định và null sẽ khớp với giá trị rỗng khi sử dụng == null. Ở phía bên kia, khi kiểm tra == false (hoặc! Something) THEN nó cũng sẽ khớp với null, undefined, 0, "", "0" và "false" – XIU

+0

@XIU Cảm ơn bạn. '" 0 "== false' luôn là thứ nhận được tôi. Thật là một cái crock ... – wchargin

+0

'[] == sai' là thứ khiến tôi lo lắng. – korisu

1

Trong underscore.js bạn phải viết điều này để đạt được chức năng đó.

var name = "someName"; 
if(!(_.isNull(name))) { 
    // do something 
} 

Trong chức năng underscore.js isNull được viết như thế này

_.isNull = function(obj) { 
    return obj === null; 
    }; 

Vì vậy, sự khác biệt là sử dụng == trong mã của bạn và === trong underscore.js.For biết thêm chi tiết về sự khác biệt mà bạn có thể tìm trong câu hỏi này.

Which equals operator (== vs ===) should be used in JavaScript comparisons?

P.S. Tôi sẽ đề nghị viết điều kiện của riêng bạn thay vì sử dụng bất kỳ thư viện nào ở nơi đơn giản như vậy.

var name = "someName"; 
if(name !== null)) { 
    // do something 
} 
+1

-1 chỉ đề cập đến sự đơn giản cực đoan của việc viết '=== null'.Có, tôi chỉ downvoted Chuck Norris. –

+6

Sai lầm lớn nhất trong cuộc đời bạn: D –

0
if ((!(_.isUndefined(data)) || _.isEmpty(data))) { 
//Valid Data 
}else {//Not Valid} 
+2

Vui lòng giải thích câu trả lời của bạn. – Shawn