Tôi biết rằng dưới đây là hai cách trong JavaScript để kiểm tra xem một biến có phải không null
, nhưng tôi bối rối đó là cách thực hành tốt nhất để sử dụng.
Tôi có nên làm:
if (myVar) {...}
hoặc là
if (myVar !== null) {...}
Tôi biết rằng dưới đây là hai cách trong JavaScript để kiểm tra xem một biến có phải không null
, nhưng tôi bối rối đó là cách thực hành tốt nhất để sử dụng.
Tôi có nên làm:
if (myVar) {...}
hoặc là
if (myVar !== null) {...}
Câu trả lời:
Chúng không tương đương. Khối thứ nhất sẽ thực thi khối theo sau if
câu lệnh if myVar
là true (nghĩa là đánh giá true
trong một điều kiện), trong khi khối thứ hai sẽ thực thi khối nếu myVar
có bất kỳ giá trị nào khác null
.
Các giá trị duy nhất không được truthy trong JavaScript như sau (aka falsy giá trị):
null
undefined
0
""
(chuỗi trống)false
NaN
Đây là cách bạn có thể kiểm tra nếu một biến không phải là NULL:
if (myVar !== null) {...}
khối sẽ được thực thi nếu myVar không null .. nó sẽ được thực thi nếu myVar không được xác định hoặc sai 0
hoặc NaN
hoặc bất cứ điều gì khác ..
("")
và không xác định. Xem fiddle của tôi làm tài liệu tham khảo: jsfiddle.net/b0tm7yaf
Có một bài đọc tại bài viết này: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/
Nó có một số mẹo hay cho JavaScript nói chung nhưng có một điều nó đề cập là bạn nên kiểm tra null như:
if(myvar) { }
Nó cũng đề cập đến những gì được coi là 'chim ưng' mà bạn có thể không nhận ra.
if(myVar) { code }
sẽ KHÔNG được thực thi chỉ khi myVar
bằng: false, 0, "", null, undefined, NaN
hoặc bạn không bao giờ xác định biến myVar
(sau đó thêm mã dừng thực thi và ném ngoại lệ).if(myVar !== null) {code}
sẽ KHÔNG được thực thi chỉ khi myVar
bằng null
hoặc bạn không bao giờ xác định nó (ném ngoại lệ).Ở đây bạn có tất cả ( src )
nếu
== (phủ định của nó ! = )
=== (phủ định của nó ! == )
Có một kịch bản có thể khác tôi vừa đi qua.
Tôi đã thực hiện một cuộc gọi ajax và nhận lại dữ liệu dưới dạng null, ở định dạng chuỗi. Tôi đã phải kiểm tra nó như thế này:
if(value != 'null'){}
Vì vậy, null là một chuỗi đọc "null" chứ không thực sự là null.
EDIT: Nên hiểu rằng tôi không bán nó như cách nó nên được thực hiện. Tôi đã có một kịch bản mà đây là cách duy nhất nó có thể được thực hiện. Tôi không chắc tại sao ... có lẽ anh chàng viết back-end đã trình bày dữ liệu không chính xác, nhưng bất kể, đây là cuộc sống thực. Thật là bực bội khi thấy điều này bị bỏ phiếu bởi một người hiểu rằng nó không hoàn toàn đúng, và sau đó được bình chọn bởi một người mà nó thực sự giúp đỡ.
null
chuỗi.
value = JSON.parse(value)
và sau đó sử dụng value != null
thử nghiệm đơn giản và phù hợp
if myVar
là null thì nếu block không thực thi khác thì nó sẽ thực thi.
if (myVar != null) {...}
'null'
, nhưng giá trị đặc biệt null
.
Đôi khi nếu nó thậm chí không được xác định thì tốt hơn là nên chuẩn bị. Đối với điều này, tôi đã sử dụng typeof
if(typeof(variable) !== "undefined") {
//it exist
if(variable !== null) {
//and is not null
}
else {
//but is null
}
}
else {
//it doesn't
}
Hai câu điều kiện bạn liệt kê ở đây không tốt hơn nhau. Việc sử dụng của bạn phụ thuộc vào tình huống. Nhân tiện, bạn có một lỗi đánh máy trong ví dụ thứ 2. Chỉ nên có một dấu bằng sau dấu chấm than.
Ví dụ đầu tiên xác định xem giá trị trong myVar có đúng không và thực thi mã bên trong {...}
Ví dụ thứ 2 đánh giá nếu myVar không bằng null và nếu trường hợp đó là đúng, nó sẽ thực thi mã của bạn bên trong {...}
Tôi đề nghị xem xét các tuyên bố có điều kiện để có thêm kỹ thuật. Một khi bạn đã quen thuộc với họ, bạn có thể quyết định khi nào bạn cần họ.
=
rất quan trọng và tạo ra một sự khác biệt lớn cho câu hỏi. Có lẽ bạn không biết về sự tồn tại của !==
và các ===
toán tử trong JavaScript?