Trong JavaScript nếu một biến đã được khai báo, nhưng chưa được gán giá trị, nó sẽ tự động được gán giá trị undefined
. Do đó, nếu bạn cố gắng hiển thị giá trị của biến đó, từ "không xác định" sẽ được hiển thị. Trong khi đó, null
là một giá trị gán đặc biệt, có thể được gán cho một biến dưới dạng đại diện không có giá trị
Nói một cách đơn giản, bạn có thể nói một giá trị null
nghĩa là không có giá trị hoặc không có giá trị, và undefined
nghĩa là một biến đã được khai báo nhưng chưa được gán giá trị
Để kiểm tra xem một biến là không xác định hay null, bạn có thể sử dụng toán tử đẳng thức ==
hoặc toán tử đẳng thức nghiêm ngặt ===
[còn được gọi là toán tử nhận dạng]. Hãy cùng xem ví dụ sau
Nếu bạn thử kiểm tra các giá trị null
bằng cách sử dụng toán tử typeof
thì nó sẽ không hoạt động như mong đợi, bởi vì JavaScript trả về "đối tượng" cho ==
0 thay vì "null"
Đây là một lỗi đã tồn tại từ lâu trong JavaScript, nhưng vì có rất nhiều mã trên web được viết xung quanh hành vi này và do đó, việc khắc phục nó sẽ tạo ra nhiều vấn đề hơn, do đó, ý tưởng khắc phục sự cố này đã bị ủy ban thiết kế và duy trì JavaScript từ bỏ.
Ghi chú. undefined
không phải là từ khóa dành riêng trong JavaScript và do đó có thể khai báo một biến có tên không xác định. Vì vậy, cách chính xác để kiểm tra biến hoặc thuộc tính undefined
là sử dụng toán tử typeof
, như thế này. ==
4
Trong Groovy, có một sự khác biệt nhỏ giữa một biến có giá trị là null và một biến có giá trị là chuỗi rỗng
Giá trị null
đại diện cho sự vắng mặt của bất kỳ đối tượng nào, trong khi chuỗi trống là một đối tượng thuộc loại String
không có ký tự nào. Nếu bạn thử so sánh hai cái, chúng không giống nhau
Ví dụ: bất kỳ mã nào bên trong khối điều kiện sau sẽ không thực thi vì giá trị của varA
[null] không bằng giá trị của varB
[chuỗi rỗng]
def varA = null
def varB = '' /* The empty string */
if [varA == varB] {
// Do something here when varA equals varB
}
Một vấn đề phổ biến khác liên quan đến sự khác biệt tinh tế này là việc cố gắng so sánh một biến với chuỗi rỗng không kiểm tra xem nó có phải là null
. Ví dụ: mã bên trong khối điều kiện sau sẽ thực thi [và gây ra lỗi NullPointerException
khi chạy] vì giá trị null
của varA
không bằng chuỗi rỗng
def varA = null
if [varA != ''] {
// set varB to the first character in varA
def varB = varA.charAt[0]
}
Để kiểm tra xem một biến chuỗi không phải là null
cũng không phải là rỗng hay không, bạn có thể viết rõ ràng cả hai điều kiện như thế này
if [varA != null && varA != ''] {
// Do something when varA is neither null nor empty
}
Tuy nhiên, Groovy cung cấp một cách đơn giản hơn. Vì cả null
và chuỗi rỗng đều ước tính thành
def varA = null
if [varA != ''] {
// set varB to the first character in varA
def varB = varA.charAt[0]
}
4 khi được hiểu là một giá trị logic, bạn có thể sử dụng cách sau để thay thếif [varA] {
// Do something when varA has a non-null and non-empty value
}
Nếu varA
là null
, khối điều kiện sẽ bị bỏ qua. Điều tương tự cũng sẽ xảy ra nếu varA
bằng với chuỗi rỗng vì một trong hai điều kiện sẽ ước tính thành boolean
def varA = null
if [varA != ''] {
// set varB to the first character in varA
def varB = varA.charAt[0]
}
4. Cú pháp nhỏ gọn hơn này là cách tiếp cận được khuyến nghị Giá trị
let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
2 và let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
3 lẻn vào dòng mã mọi lúc. Cho dù chúng ta mất một tham chiếu do tác dụng phụ, quên gán một biến tham chiếu cho một đối tượng trong bộ nhớ hay chúng ta nhận được phản hồi trống từ một tài nguyên, cơ sở dữ liệu hoặc API khác - chúng ta luôn phải xử lý các giá trị let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
2 và let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
3Trong hướng dẫn ngắn này, chúng ta sẽ xem xét cách kiểm tra xem một biến là
2 haylet a; if [typeof a === 'undefined'] { console.log['Undefined variable']; } else if [typeof a === 'null'] { console.log['Null-value']; }
3 trong JavaScriptlet a; if [typeof a === 'undefined'] { console.log['Undefined variable']; } else if [typeof a === 'null'] { console.log['Null-value']; }
Sự khác biệt giữa không xác định và null
Các biến
let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
2 và let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
3 thường đi đôi với nhau và một số sử dụng các thuật ngữ thay thế cho nhau. Mặc dù, có một sự khác biệt giữa chúng- không xác định là một biến đề cập đến một thứ không tồn tại và biến không được xác định là bất cứ thứ gì
- null là một biến được xác định nhưng thiếu một giá trị
Sự khác biệt giữa hai có lẽ rõ ràng hơn một chút thông qua mã
Undefined variable
0 không xác định - nó không được gán cho bất kỳ thứ gì và không có định nghĩa rõ ràng về nó thực sự là gì. Undefined variable
1 được định nghĩa là giá trị nullCho dù
Undefined variable
1 được định nghĩa trực tiếp là let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
3 hay được định nghĩa là giá trị được trả về của một hàm [hóa ra là trả về giá trị let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
3] không quan trọng - nó được định nghĩa là một cái gì đóMặt khác,
Undefined variable
0 hoàn toàn không là gì cả. Không có nhiệm vụ nào được thực hiện và hoàn toàn không rõ nó nên hoặc có thể là gìTrong thực tế, hầu hết các giá trị
let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
3 và let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
2 phát sinh do lỗi của con người trong quá trình lập trình và hai giá trị này đi cùng nhau trong hầu hết các trường hợp. Khi kiểm tra cái này - chúng tôi cũng thường kiểm tra cái kiaKiểm tra xem Biến không xác định hay null
Có hai cách bạn có thể chọn khi kiểm tra xem một biến là
let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
2 hay let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
3 trong vanilla JavaScriptToán tử == và ===
Có sự khác biệt giữa Toán tử bình đẳng lỏng lẻo [_______25_______0] và Toán tử bình đẳng nghiêm ngặt [
if [typeof someVar === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof someVar === 'null'] {
console.log['Null-value'];
}
1] trong JavaScript. Đẳng thức lỏng lẻo có thể dẫn đến kết quả không mong muốn và hoạt động khác trong ngữ cảnh này so với toán tử đẳng thức nghiêm ngặtGhi chú. Điều này không nên được coi là bằng chứng rằng
let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
3 và let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
2 giống nhau. Toán tử đẳng thức lỏng lẻo sử dụng các định nghĩa "thông tục" về giá trị trung thực/sai. if [typeof someVar === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof someVar === 'null'] {
console.log['Null-value'];
}
4, if [typeof someVar === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof someVar === 'null'] {
console.log['Null-value'];
}
5 và if [typeof someVar === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof someVar === 'null'] {
console.log['Null-value'];
}
6 được đánh giá là if [typeof someVar === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof someVar === 'null'] {
console.log['Null-value'];
}
7 vì chúng biểu thị việc thiếu dữ liệu, mặc dù chúng không thực sự bằng một giá trị booleanĐiều đó đang được nói - vì toán tử đẳng thức lỏng lẻo coi
let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
3 và let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
2 giống nhau - bạn có thể sử dụng nó làm phiên bản tốc ký để kiểm tra cả haiĐiều này sẽ kiểm tra xem
Undefined variable
0 có phải là let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
3 hoặc let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
2 hay không. Vì Undefined variable
0 là let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
2, điều này dẫn đếnNull or undefined value!
Mặc dù, chúng tôi không thực sự biết đó là cái nào. Nếu chúng ta sử dụng toán tử nghiêm ngặt để kiểm tra xem
Undefined variable
0 có phải là let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
3 hay không, chúng ta sẽ ngạc nhiên một cách khó chịu khi gặp một giá trị let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
2 trong câu lệnh Undefined variable
8Undefined variable
0 thực sự không phải là let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
3, nhưng nó là let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
2. Trong trường hợp này, chúng tôi muốn kiểm tra chúng một cách riêng biệt, nhưng có thể linh hoạt khi biết lý do thực sự của dòng chảyỞ đây, chúng tôi đã kết hợp chúng với nhau bằng một OR độc quyền - mặc dù bạn có thể tách chúng ra cho các hoạt động khôi phục khác nhau nếu bạn cũng muốn
Ghi chú. Điều đáng chú ý là nếu tham chiếu không tồn tại, một
let someVariable = 'Hello!'
if [typeof somevariable === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof somevariable === 'null'] {
console.log['Null-value'];
} else {
console.log[somevariable];
}
2 sẽ bị ném. Điều này có thể tránh được thông qua việc sử dụng toán tử let someVariable = 'Hello!'
if [typeof somevariable === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof somevariable === 'null'] {
console.log['Null-value'];
} else {
console.log[somevariable];
}
3, mặc dù nó có thể không phải là lựa chọn tốt nhất từ góc độ thiết kế mã. Nếu bạn đang sử dụng một biến tham chiếu không tồn tại - âm thầm bỏ qua vấn đề đó bằng cách sử dụng let someVariable = 'Hello!'
if [typeof somevariable === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof somevariable === 'null'] {
console.log['Null-value'];
} else {
console.log[somevariable];
}
3 có thể dẫn đến lỗi âm thầm trong dòngtoán tử loại
Ngoài ra, toán tử
let someVariable = 'Hello!'
if [typeof somevariable === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof somevariable === 'null'] {
console.log['Null-value'];
} else {
console.log[somevariable];
}
3 có thể được sử dụng cùng với toán tử if [typeof someVar === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof someVar === 'null'] {
console.log['Null-value'];
}
1 để kiểm tra xem loại biến có bằng let someVariable = 'Hello!'
if [typeof somevariable === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof somevariable === 'null'] {
console.log['Null-value'];
} else {
console.log[somevariable];
}
7 hoặc let someVariable = 'Hello!'
if [typeof somevariable === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof somevariable === 'null'] {
console.log['Null-value'];
} else {
console.log[somevariable];
}
8 hay khônglet a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
Kết quả này trong
Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó
Undefined variable
Tuy nhiên, điều đáng chú ý là nếu bạn chọn một biến tham chiếu không tồn tại -
let someVariable = 'Hello!'
if [typeof somevariable === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof somevariable === 'null'] {
console.log['Null-value'];
} else {
console.log[somevariable];
}
3 rất vui khi làm việc với nó, hãy coi nó là let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
2if [typeof someVar === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof someVar === 'null'] {
console.log['Null-value'];
}
Mã này cũng dẫn đến
Undefined variable
Về mặt kỹ thuật,
Undefined variable
1 là một biến không xác định, vì nó không có phép gán. Mặt khác, điều này có thể làm cho let someVariable = 'Hello!'
if [typeof somevariable === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof somevariable === 'null'] {
console.log['Null-value'];
} else {
console.log[somevariable];
}
3 âm thầm thất bại và báo hiệu rằng giá trị đến có thể có vấn đề, thay vì gây ra lỗi cho thấy rõ ràng rằng bạn đang xử lý một biến không tồn tạiChẳng hạn - hãy tưởng tượng bạn mắc lỗi đánh máy và vô tình nhập vào
Undefined variable
3 thay vì Undefined variable
4 trong mệnh đề Undefined variable
5let someVariable = 'Hello!'
if [typeof somevariable === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof somevariable === 'null'] {
console.log['Null-value'];
} else {
console.log[somevariable];
}
Ở đây, chúng tôi đang cố gắng kiểm tra xem
Undefined variable
4 là let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
3 hay let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
2 và nó không phải. Tuy nhiên, do lỗi đánh máy, thay vào đó, Undefined variable
3 được chọn và kết quả làUndefined variable
Trong một trường hợp phức tạp hơn - có thể khó phát hiện lỗi đánh máy này hơn trong trường hợp này. Chúng tôi đã có một thất bại thầm lặng và có thể dành thời gian cho một con đường sai lầm. Mặt khác, chỉ sử dụng các toán tử
if [typeof someVar === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof someVar === 'null'] {
console.log['Null-value'];
}
0 và if [typeof someVar === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof someVar === 'null'] {
console.log['Null-value'];
}
1 ở đây sẽ cảnh báo chúng tôi về biến tham chiếu không tồn tạilet someVariable = 'Hello!'
if [somevariable === 'undefined'] {
console.log['Undefined variable'];
} else if [somevariable === 'null'] {
console.log['Null-value'];
} else {
console.log[somevariable];
}
Mã này dẫn đến
error: Uncaught ReferenceError: somevariable is not defined
Ghi chú. Điều này không có nghĩa là
let someVariable = 'Hello!'
if [typeof somevariable === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof somevariable === 'null'] {
console.log['Null-value'];
} else {
console.log[somevariable];
}
3 vốn dĩ là một lựa chọn tồi - nhưng nó cũng kéo theo hàm ý nàySử dụng Lodash để kiểm tra xem Biến có rỗng, không xác định hay không
Cuối cùng - bạn có thể chọn thư viện bên ngoài bên cạnh các toán tử tích hợp. Mặc dù việc nhập một thư viện bên ngoài không hợp lý chỉ để thực hiện kiểm tra này - trong trường hợp đó, tốt hơn hết là bạn chỉ nên sử dụng các toán tử
Tuy nhiên, Lodash đã có mặt trong nhiều dự án - đó là một thư viện được sử dụng rộng rãi và khi nó đã có mặt, sẽ không bị giảm hiệu quả khi sử dụng một vài phương thức mà nó cung cấp. Đáng chú ý nhất, Lodash cung cấp một số phương thức hữu ích để kiểm tra xem một biến có phải là null, không xác định hay không
Cài đặt và nhập Lodash
Bạn có thể nhập Lodash thông qua CDN
//cdn.jsdelivr.net/npm/[email protected]/lodash.min.js
Nhập cục bộ từ tệp
let someVariable = 'Hello!'
if [somevariable === 'undefined'] {
console.log['Undefined variable'];
} else if [somevariable === 'null'] {
console.log['Null-value'];
} else {
console.log[somevariable];
}
3let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
0Hoặc cài đặt qua NPM
let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
1Hơn nữa, nó có thể được nhập dưới dạng mô-đun ES6 hoặc được nhập thông qua cú pháp
let someVariable = 'Hello!'
if [somevariable === 'undefined'] {
console.log['Undefined variable'];
} else if [somevariable === 'null'] {
console.log['Null-value'];
} else {
console.log[somevariable];
}
4Ghi chú. Quy ước đặt tên cho phiên bản Lodash là
let someVariable = 'Hello!'
if [somevariable === 'undefined'] {
console.log['Undefined variable'];
} else if [somevariable === 'null'] {
console.log['Null-value'];
} else {
console.log[somevariable];
}
5, tuy nhiên, ngụ ý bởi cái tên, bạn không cần phảiBây giờ, chúng ta có thể sử dụng thư viện để kiểm tra xem một biến là
let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
3, let a;
if [typeof a === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof a === 'null'] {
console.log['Null-value'];
}
2 hay nil - trong đó nil đề cập đến cả hai phiền não trước đó. Nó có thể được sử dụng làm phiên bản tốc ký để kiểm tra cả haiPhần kết luận
Trong hướng dẫn ngắn này, chúng ta đã xem xét cách kiểm tra xem một biến là null, undefined hay nil trong JavaScript, bằng cách sử dụng các toán tử
if [typeof someVar === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof someVar === 'null'] {
console.log['Null-value'];
}
0, if [typeof someVar === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof someVar === 'null'] {
console.log['Null-value'];
}
1 và let someVariable = 'Hello!'
if [typeof somevariable === 'undefined'] {
console.log['Undefined variable'];
} else if [typeof somevariable === 'null'] {
console.log['Null-value'];
} else {
console.log[somevariable];
}
3, lưu ý ưu và nhược điểm của từng phương pháp. Cuối cùng, chúng tôi đã xem xét nhanh việc sử dụng Lodash - một thư viện tiện ích tiện lợi phổ biến để thực hiện các kiểm tra tương tự