Không xác định có nghĩa là 0 javascript?

Toán tử void đánh giá một biểu thức và trả về giá trị nguyên thủy không xác định. void 0 đánh giá 0, không làm gì cả, rồi trả về undefined. Nó thực sự là một bí danh cho undefined

Tại sao void 0 được sử dụng làm bí danh cho không xác định?

Một trong những điều kỳ quặc của JavaScript là undefined không phải là từ khóa dành riêng. Thay vào đó, nó là một thuộc tính của đối tượng toàn cầu

Trước ES5 (2009), có thể sửa đổi thuộc tính chung của undefined, điều này có thể dẫn đến hành vi không mong muốn cho undefined

Xem xét ví dụ sau (không hoạt động trong các công cụ JavaScript hiện đại)

// Pre-ES5 example - does not work in modern JS engines:

// changes property 'undefined' on the global object:
undefined = "something else"; 

// potentially in some other JavaScript file or script section:
if (aVariable === undefined) {
  // aVariable is equal to "something else", 
  // but not to the primitive value 'undefined'
  doSomething();
}

Việc sửa đổi toàn cầu undefined thậm chí có thể xảy ra trong mã của bên thứ 3, e. g. , các thư viện được nhập qua thẻ script. Vì void 0 luôn trả về giá trị nguyên thủy thực tế undefined, nên nó thường được sử dụng trước ES5 để làm cho mã không an toàn đối với việc định nghĩa lại thuộc tính toàn cầu undefined

Thuộc tính toàn cầu 'không xác định' sau ES5

Vấn đề mà undefined có thể được sửa đổi trên đối tượng toàn cầu lớn đến mức tiêu chuẩn JavaScript đã bị thay đổi. Với ES5, thuộc tính toàn cầu undefined trở thành chỉ đọc. Cố gắng thay đổi giá trị không làm gì trong JavaScript hiện đại

globalThis.undefined = "something else";
console.log(undefined); // prints undefined in modern JS environments

Không xác định vẫn có thể bị che khuất bởi một biến cục bộ

Tuy nhiên, trong khi việc thay đổi thuộc tính chung của undefined không còn khả thi, thì undefined vẫn không phải là từ khóa dành riêng trong JavaScript. Do đó, nó vẫn có thể bị che khuất bởi một biến cục bộ

const undefined = "something else";
let check = aVariable === void 0; // void 0 is needed here

Có một biến cục bộ với tên undefined là một cạm bẫy mà bạn muốn tránh. Quy tắc ESLint không xác định không xác định không cho phép sử dụng không xác định làm tên biến và ngăn chặn các vấn đề về đổ bóng

Khoảng trống 0 có thể giúp giảm kích thước gói không?

Biểu thức void 0 ngắn hơn undefined. Kích thước gói JavaScript rất cần thiết để tạo các trang web tải nhanh và việc loại bỏ một vài byte có thể hữu ích

Tuy nhiên, tốt nhất là để việc tối ưu hóa kích thước mã cơ bản cho các công cụ khai thác như Terser như một phần của quy trình gói sản phẩm. Họ có thể thực hiện nhiều tối ưu hóa khác nhau và mã nguồn vẫn dễ đọc hơn mà không cần bất kỳ tối ưu hóa kích thước mã thủ công nào như sử dụng void 0 thay vì undefined

Tránh void 0 trong JavaScript hiện đại

Tóm lại, trong các trình duyệt và công cụ JavaScript hiện đại, không còn lý do gì để sử dụng void 0 nữa

  • không thể thay đổi thuộc tính toàn cầu undefined trong ES5 và các môi trường mới hơn
  • các biến cục bộ có tên undefined có thể không được phép với quy tắc ESLint no-undefined
  • công cụ khai thác có thể thay thế undefined bằng void 0 khi tạo gói sản xuất

Ngược lại, void 0 làm cho mã JavaSCript khó đọc và khó hiểu hơn vì bạn cần biết ý nghĩa của void 0 và xử lý các thuật ngữ khác nhau (void 0, undefined) cho cùng một khái niệm (undefined)

Biến không xác định hoặc bất kỳ thứ gì không có giá trị sẽ luôn trả về "không xác định" trong JavaScript. Điều này không giống như null, mặc dù thực tế là cả hai đều ngụ ý trạng thái trống rỗng

Thông thường, bạn sẽ gán một giá trị cho một biến sau khi bạn khai báo nó, nhưng điều này không phải lúc nào cũng đúng

Khi một biến được khai báo hoặc khởi tạo nhưng không có giá trị nào được gán cho nó, JavaScript sẽ tự động hiển thị "không xác định". Nó trông như thế này

let myStr;

console.log(myStr); // undefined

Ngoài ra, khi bạn thử truy cập các giá trị, chẳng hạn như trong một mảng hoặc đối tượng không tồn tại, nó sẽ ném ra

let user = {
    name: "John Doe",
    age: 14
};

console.log(user.hobby); // undefined
2

let user = {
    name: "John Doe",
    age: 14
};

console.log(user.hobby); // undefined

Đây là một ví dụ khác

let myArr = [12, 33, 44];

console.log(myArr[7]); // undefined

Trong bài viết này, bạn sẽ tìm hiểu các phương pháp và cách tiếp cận khác nhau mà bạn có thể sử dụng để biết liệu một biến có phải là

let user = {
    name: "John Doe",
    age: 14
};

console.log(user.hobby); // undefined
2 trong JavaScript hay không. Điều này là cần thiết nếu bạn muốn tránh các lỗi ném mã khi thực hiện thao tác với một biến không xác định

Trong trường hợp bạn đang vội, đây là ba phương pháp tiêu chuẩn có thể giúp bạn kiểm tra xem một biến có phải là

let user = {
    name: "John Doe",
    age: 14
};

console.log(user.hobby); // undefined
2 trong JavaScript hay không

if(myStr === undefined){}
if(typeof myArr[7] === "undefined"){}
if(user.hobby === void 0){}

Bây giờ hãy giải thích chi tiết hơn về từng phương pháp này

Cách kiểm tra xem một biến có phải là không xác định trong JavaScript với So sánh trực tiếp hay không

Một trong những phương pháp đầu tiên xuất hiện trong đầu là so sánh trực tiếp. Đây là nơi bạn so sánh đầu ra để xem nó có trả về

let user = {
    name: "John Doe",
    age: 14
};

console.log(user.hobby); // undefined
2 không. Bạn có thể dễ dàng làm điều này theo cách sau

let user = {
    name: "John Doe",
    age: 14
};

if (user.hobby === undefined) {
    console.log("This is undefined");
}

Điều này cũng hoạt động cho các mảng như bạn có thể thấy bên dưới

let scores = [12, 34, 66, 78];

if (scores[10] === undefined) {
    console.log("This is undefined");
}

Và nó chắc chắn cũng hoạt động cho các biến khác

let name;

if (name === undefined) {
    console.log("This is undefined");
}

Cách kiểm tra xem một biến có phải là không xác định trong JavaScript với let user = { name: "John Doe", age: 14 }; console.log(user.hobby); // undefined 6

Chúng ta cũng có thể sử dụng loại biến để kiểm tra xem nó có phải là

let user = {
    name: "John Doe",
    age: 14
};

console.log(user.hobby); // undefined
2 không. May mắn cho chúng tôi, undefined là một kiểu dữ liệu cho một giá trị không xác định như bạn có thể thấy bên dưới. ‌

let name;

console.log(typeof name); // "undefined"

Với điều này, giờ đây chúng ta có thể sử dụng kiểu dữ liệu để kiểm tra undefined cho tất cả các loại dữ liệu như chúng ta đã thấy ở trên. Đây là cách kiểm tra sẽ như thế nào đối với cả ba tình huống chúng tôi đã xem xét

if(typeof user.hobby === "undefined"){}
if(typeof scores[10] === "undefined"){}
if(typeof name === "undefined"){}

Cách kiểm tra xem một biến có phải là không xác định trong JavaScript với Toán tử let user = { name: "John Doe", age: 14 }; console.log(user.hobby); // undefined 8 hay không

Toán tử

let user = {
    name: "John Doe",
    age: 14
};

console.log(user.hobby); // undefined
9 thường được sử dụng để lấy giá trị nguyên hàm
let user = {
    name: "John Doe",
    age: 14
};

console.log(user.hobby); // undefined
2. Bạn có thể làm điều này bằng cách sử dụng "
let myArr = [12, 33, 44];

console.log(myArr[7]); // undefined
1" tương tự như "
let myArr = [12, 33, 44];

console.log(myArr[7]); // undefined
2" như bạn có thể thấy bên dưới

console.log(void 0); // undefined
console.log(void(0)); // undefined

Theo nghĩa thực tế, điều này hoạt động giống như so sánh trực tiếp (mà chúng ta đã thấy trước đây). Nhưng chúng tôi sẽ thay thế undefined bằng

let myArr = [12, 33, 44];

console.log(myArr[7]); // undefined
1 hoặc
let myArr = [12, 33, 44];

console.log(myArr[7]); // undefined
2 như bên dưới

let user = {
    name: "John Doe",
    age: 14
};

console.log(user.hobby); // undefined
0

Hoặc như thế này

let user = {
    name: "John Doe",
    age: 14
};

console.log(user.hobby); // undefined
1

Phần kết luận

Trong bài viết này, chúng ta đã học cách kiểm tra xem một biến có phải là không xác định hay không và nguyên nhân khiến một biến không được xác định

Chúng tôi cũng đã học được ba phương pháp mà chúng tôi có thể sử dụng để kiểm tra xem một biến có phải là không xác định hay không. Tất cả các phương pháp hoạt động hoàn hảo. Lựa chọn phương pháp ưa thích của bạn là hoàn toàn tùy thuộc vào bạn

Chúc các bạn code vui vẻ

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO


Không xác định có nghĩa là 0 javascript?
Joel Olawanle

Nhà phát triển Frontend & Người viết kỹ thuật


Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

0 có giống với JavaScript không xác định không?

Hoàn toàn giống nhau .

Không xác định có nghĩa là gì trong JavaScript?

Biến chưa được gán giá trị thuộc loại không xác định. Một phương thức hoặc câu lệnh cũng trả về không xác định nếu biến đang được đánh giá không có giá trị được gán. Hàm trả về không xác định nếu giá trị không được trả về.

Không xác định == JavaScript không xác định?

Nói một cách đơn giản, không xác định có nghĩa là một biến đã được khai báo nhưng chưa được gán giá trị. không xác định là một loại của chính nó (không xác định) . Các biến chưa gán được JavaScript khởi tạo với giá trị mặc định là không xác định.

Không xác định có giống như null không?

Giá trị không xác định là giá trị nguyên thủy được sử dụng khi một biến chưa được gán giá trị. Giá trị null là giá trị nguyên thủy đại diện cho tham chiếu rỗng, trống hoặc không tồn tại . Khi bạn khai báo một biến thông qua var và không đặt giá trị cho nó, nó sẽ có giá trị không xác định.