Javascript không bằng null

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 varAnull, 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'];
}
3

Trong 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à

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 JavaScript

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ị null

Cho 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 kia

Kiể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 JavaScript

Toá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ặt

Ghi 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 đến

Null 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
8

Undefined 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òng

toá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ông

let 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'];
}
2

if [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ại

Chẳ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
5

let 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ại

let 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ày

Sử 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];
}
3

let a;

if [typeof a === 'undefined'] {
    console.log['Undefined variable'];
} else if [typeof a === 'null'] {
    console.log['Null-value'];
}
0

Hoặ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'];
}
1

Hơ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];
}
4

Ghi 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ải

Bâ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ả hai

Phầ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ự

làm gì. = null nghĩa là gì trong JavaScript?

Trong JavaScript, null là một loại nguyên thủy cố ý chứa giá trị null . Không xác định là một kiểu nguyên thủy và đại diện cho một biến bạn khai báo mà không bắt đầu một giá trị. Vì vậy, null là không có gì và undefined chỉ thiếu một cái gì đó. 🤣 null là không có gì; .

Làm cách nào để kiểm tra xem một giá trị không bằng null trong JavaScript?

Có nhiều cách khác nhau để kiểm tra xem một giá trị có phải là null hay không trong JavaScript. .
Sử dụng Toán tử bình đẳng nghiêm ngặt [===]
Sử dụng đối tượng. hàm is[]
Sử dụng toán tử typeof

Không xác định === null JS?

Có nghĩa là null bằng không xác định nhưng không giống nhau . Khi chúng tôi định nghĩa một biến thành không xác định thì chúng tôi đang cố truyền đạt rằng biến đó không tồn tại. Khi chúng tôi định nghĩa một biến thành null thì chúng tôi đang cố truyền đạt rằng biến đó trống.

LÀ null === null trong JS?

null là một giá trị đặc biệt trong JavaScript đại diện cho một đối tượng bị thiếu. Toán tử đẳng thức nghiêm ngặt xác định xem một biến có null hay không . biến === null. toán tử đánh máy rất hữu ích để xác định loại biến [số, chuỗi, boolean].

Chủ Đề