Hướng dẫn does javascript have elvis operator? - javascript có toán tử elvis không?
Đã tạo: tháng 3-17, 2022 Toán tử Elvis là phiên bản ngắn hơn của toán tử ternary. Nhà điều hành này được gọi là toán tử hợp tác Nó chỉ trả về một giá trị mặc định khi giá trị biểu thức là 8 hoặc 9.Thực hiện let val = myObj.name ?? myObj.email ?? "something null or undefined"; console.log(val) 6 Nhà điều hành hợp tác let val = myObj.name ?? myObj.email ?? "something null or undefined"; console.log(val) 7 trong JavaScriptNhà điều hành hợp tác 6 7 đã được giới thiệu trong phiên bản ECMAScript 2020 của ngôn ngữ lập trình JavaScript.Syntax:
Toán tử 7 sẽ chỉ trả về 5 (biểu thức có mặt ở bên phải của toán tử 7) chỉ khi 7 (biểu thức có mặt ở bên trái của toán tử 7) là 8 hoặc 9.Code:
Ở đây, chúng tôi đã tạo một đối tượng gọi là 1 có chứa một thuộc tính gọi là 2 chứa toàn bộ đối tượng làm giá trị. Sau đó, chúng tôi đang sử dụng toán tử 7.Ở bên trái của toán tử 7, chúng ta có biểu thức 5, trong khi bên phải, chúng ta có biểu thức 6. Biểu thức đúng, tức là, giá trị mặc định, sẽ chỉ được gán cho biến 7 nếu 5 là 8 hoặc 9.Biểu thức 5 chứa một số giá trị và nó không phải là 8 hoặc 9. Do đó, giá trị 5 sẽ được lưu trữ bên trong biến 7 và sau khi bạn in biến 7, đầu ra bạn nhận được như sau.Output: Toán tử kết hợp 6 7 có thể được sử dụng bên trong một câu lệnh & nbsp; với bất kỳ biểu thức số nào như trong ví dụ dưới đây.Code:
Trong ví dụ này, nếu cả 9 và 0 đều là 8 hoặc 9, thì chỉ có toán tử 7 sẽ trả về chuỗi hoặc nó sẽ trả về giá trị của bất kỳ một biểu thức đầu tiên nào không phải là 8 hoặc 9.Vì vậy, ở đây, chỉ có biểu thức 0 là 9 chứ không phải 5, do đó, giá trị của biểu thức 5 sẽ được trả về và lưu trữ bên trong biến 7.Biến 7 hiện sẽ chứa đối tượng mà thuộc tính 2 đang lưu trữ và đối tượng này sẽ được in trên bảng điều khiển.Output: Nhà điều hành 7 không được hỗ trợ trên các trình duyệt IE và Opera. Để biết thêm chi tiết liên quan đến khả năng tương thích của trình duyệt, bạn có thể đọc tài liệu MDN.Trước khi toán tử 7 được giới thiệu bên trong ngôn ngữ lập trình JavaScript, một cách tiếp cận phổ biến là sử dụng toán tử logic 5 6 để gán giá trị mặc định của biến. Nhưng cách tiếp cận này của việc gán một giá trị mặc định tạo ra các vấn đề khác nhau.Code:
Output:
7 là toán tử logic Boolean, toán tử này có thể gây ra hành vi bất ngờ nếu bạn coi 8, 9 hoặc 0 là các giá trị hợp lệ như được hiển thị ở trên.Thay đổi ví dụ tương tự bằng cách thay thế toán tử 5 bằng toán tử liên kết 6 7 sẽ mang lại kết quả khác nhau.Code:
Output:
Như bạn có thể thấy, toán tử này tạo ra đầu ra thích hợp. Đây là lý do tại sao nhà điều hành liên kết 6 7 đã được giới thiệu trong JavaScript.Bài viết liên quan - Nhà điều hành JavaScriptMột trong những yêu cầu tính năng đầu tiên của TypeScript là toán tử Elvis. Chính xác hơn, toán tử điều hướng an toàn null. Đó là một biến thể của toán tử "DOT" cho phép bạn truy cập các thuộc tính và phương thức ngay cả khi đối tượng trước dấu chấm là null hoặc không xác định.optional chaining operator ( Toán tử chuỗi tùy chọn (const nestedProp = obj.first && obj.first.second; 6) truy cập vào thuộc tính của một đối tượng hoặc gọi hàm. Nếu đối tượng là let val = myObj.name ?? myObj.email ?? "something null or undefined"; console.log(val) 9 hoặc let val = myObj.name ?? myObj.email ?? "something null or undefined"; console.log(val) 8, nó sẽ trả về let val = myObj.name ?? myObj.email ?? "something null or undefined"; console.log(val) 9 thay vì ném lỗi.Thử nó
Cú phápSự mô tả Điều này dẫn đến các biểu thức ngắn hơn và đơn giản hơn khi truy cập các thuộc tính chuỗi khi khả năng tồn tại là một tham chiếu có thể bị thiếu. Nó cũng có thể hữu ích trong khi khám phá nội dung của một đối tượng khi không có sự đảm bảo nào về việc yêu cầu thuộc tính nào. Ví dụ, hãy xem xét một đối tượng 6 có cấu trúc lồng nhau. Không có chuỗi tùy chọn, tìm kiếm một Subproperty được lồng sâu đòi hỏi phải xác nhận các tài liệu tham khảo ở giữa, chẳng hạn như:
Giá trị của 7 được xác nhận là không phải là -____ 28 (và không phải -____ 29) trước khi truy cập giá trị của 00. Điều này ngăn ngừa lỗi sẽ xảy ra nếu bạn truy cập trực tiếp 00 mà không cần kiểm tra 7.Đây là một mô hình thành ngữ trong JavaScript, nhưng nó được dài dòng khi chuỗi dài và nó không an toàn. Ví dụ: nếu 7 là một giá trị giả mà không phải là 8 hoặc 9, chẳng hạn như 8, nó vẫn sẽ ngắn mạch và làm cho 07 trở thành 8, có thể không mong muốn.Tuy nhiên, với toán tử chuỗi tùy chọn ( 6), bạn không phải kiểm tra rõ ràng và ngắn mạch dựa trên trạng thái của 7 trước khi cố gắng truy cập 00:
Bằng cách sử dụng toán tử 6 thay vì chỉ 1, JavaScript biết kiểm tra ngầm để chắc chắn 7 không phải là 8 hoặc 9 trước khi cố gắng truy cập 00. Nếu 7 là 8 hoặc 9, biểu thức sẽ tự động ngắn mạch, trả về 9.Điều này tương đương với các điều sau đây, ngoại trừ biến tạm thời trên thực tế không được tạo ra: 0Chuỗi tùy chọn không thể được sử dụng trên một đối tượng gốc không được khai báo, nhưng có thể được sử dụng với một đối tượng gốc có giá trị 9. 1Chuỗi tùy chọn với các cuộc gọi chức năngBạn có thể sử dụng chuỗi tùy chọn khi cố gắng gọi một phương thức có thể không tồn tại. Điều này có thể hữu ích, ví dụ, khi sử dụng API trong đó phương thức có thể không khả dụng, do tuổi thực hiện hoặc do tính năng không có sẵn trên thiết bị của người dùng. Sử dụng chuỗi tùy chọn với các cuộc gọi chức năng khiến biểu thức tự động trả về 9 thay vì ném ngoại lệ nếu phương thức không tìm thấy: 2Tuy nhiên, nếu có một thuộc tính có tên như vậy không phải là một hàm, sử dụng 6 vẫn sẽ tăng ngoại lệ 25 "SomeInterface.Custommethod không phải là một hàm". Lưu ý: Nếu bản thân 26 itself is 8 or 9, a 25 exception will still be raised ("someInterface is null"). If you expect that 26 itself may be
8 or 9, you have to use 6 at this position as well: 34. 35 là cách ngắn nhất để vào chế độ Eval gián tiếp. Để biết thêm thông tin, xem trang tham chiếu 36.Chuỗi tùy chọn với biểu thứcBạn cũng có thể sử dụng toán tử chuỗi tùy chọn với ký hiệu khung, cho phép chuyển biểu thức làm tên thuộc tính: 3Điều này đặc biệt hữu ích cho các mảng, vì các chỉ số mảng phải được truy cập bằng dấu ngoặc. 4Chuỗi tùy chọn không hợp lệ ở phía bên trái của một nhiệm vụKhông hợp lệ khi cố gắng gán cho kết quả của một biểu thức chuỗi tùy chọn: 5Short-circuitingKhi sử dụng chuỗi tùy chọn với các biểu thức, nếu toán hạng bên trái là 8 hoặc 9, biểu thức sẽ không được đánh giá. Ví dụ: 6Truy cập tài sản tiếp theo cũng sẽ không được đánh giá. 7Điều này tương đương với: 8Tuy nhiên, hành vi ngắn mạch này chỉ xảy ra dọc theo một "chuỗi" truy cập tài sản liên tục. Nếu bạn nhóm một phần của chuỗi, thì quyền truy cập thuộc tính tiếp theo vẫn sẽ được đánh giá. 9Điều này tương đương với: 0Tuy nhiên, hành vi ngắn mạch này chỉ xảy ra dọc theo một "chuỗi" truy cập tài sản liên tục. Nếu bạn nhóm một phần của chuỗi, thì quyền truy cập thuộc tính tiếp theo vẫn sẽ được đánh giá. Ngoại trừ biến let myObj = { name: { firstname: "Adam", lastname: "Smith" } }; let val = myObj.name ?? "Default Value"; console.log(val); 39 không được tạo.Ví dụVí dụ cơ bản 1Ví dụ này tìm kiếm giá trị của thuộc tính Hello! Hello! Hello! 2 cho thành viên let myObj = { name: { firstname: "Adam", lastname: "Smith" } }; let val = myObj.name ?? "Default Value"; console.log(val); 41 trong bản đồ khi không có thành viên như vậy. Do đó, kết quả là let val = myObj.name ?? myObj.email ?? "something null or undefined"; console.log(val) 9.Xử lý các cuộc gọi lại tùy chọn hoặc trình xử lý sự kiện 2 3Nếu bạn sử dụng các cuộc gọi lại hoặc tìm nạp các phương thức từ một đối tượng có gán phá hủy, bạn có thể có các giá trị không tồn tại mà bạn không thể gọi là chức năng trừ khi bạn đã kiểm tra sự tồn tại của chúng. Sử dụng const nestedProp = obj.first && obj.first.second; 6, bạn có thể tránh được bài kiểm tra bổ sung này:Xếp chồng toán tử chuỗi tùy chọn 4Với các cấu trúc lồng nhau, có thể sử dụng chuỗi tùy chọn nhiều lần:Kết hợp với nhà điều hành liên kết không 5Thông số kỹ thuật
Tính tương thích của trình duyệt webBảng BCD chỉ tải trong trình duyệt Xem thêmCó một nhà điều hành kết hợp null trong JavaScript?Toán tử kết hợp không có Nullish (??) là một toán tử logic trả về toán hạng bên phải của nó khi toán hạng bên tay trái của nó là không xác định hoặc không xác định, và nếu không thì sẽ trả lại toán hạng bên trái của nó.
JavaScript có hỗ trợ chuỗi tùy chọn không?Chuỗi tùy chọn không thể được sử dụng trên một đối tượng gốc không được khai báo, nhưng có thể được sử dụng với một đối tượng gốc với giá trị không xác định.cannot be used on a non-declared root object, but can be used with a root object with value undefined .
JavaScript có toán tử ternary không?Toán tử có điều kiện (ternary) là toán tử JavaScript duy nhất có ba toán hạng: một điều kiện theo sau là dấu hỏi (?), Sau đóThực thi nếu điều kiện là giả. that takes three operands: a condition followed by a question mark ( ? ), then an expression to execute if the condition is truthy followed by a colon ( : ), and finally the expression to execute if the condition is falsy.
Toán tử Elvis trong TypeScript là gì?Một trong những yêu cầu tính năng đầu tiên của TypeScript là toán tử Elvis.Chính xác hơn, toán tử điều hướng an toàn null.Đó là một biến thể của toán tử "DOT" cho phép bạn truy cập các thuộc tính và phương thức ngay cả khi đối tượng trước dấu chấm là null hoặc không xác định.null-safe navigation operator. That's a variant of the "dot" operator allowing you to access attributes and methods even if the object preceding the dot is null or undefined. |