- vừa được xem lúc

4 toán tử JavaScript quên sầu luôn :)

0 0 9

Người đăng: Cuộc sống mà

Theo Viblo Asia

Hãy cùng mình tìm hiểu một số toán tử JS mới!

Các bạn đã bao giờ dành nhiều thời gian để đọc qua các tài liệu Mozilla chưa? Nếu rồi thì bạn cũng biết rằng có rất nhiều thông tin về JavaScript trên mạng. Điều này khiến bạn dễ dàng bỏ qua các toán tử JavaScript thông thường.

Tuy nhiên, chỉ vì những toán tử này không phổ biến không có nghĩa là chúng không mạnh! Mỗi chúng trông giống nhau về mặt cú pháp, nhưng hãy nhớ đọc về từng thứ vì chúng hoạt động theo những cách khác nhau.

Cùng mình tìm hiểu nhé!

1. Toán tử ??

Trong JavaScript, toán tử ?? được gọi là toán tử liên kết nullish. Toán tử này sẽ trả về đối số đầu tiên nếu nó không phải là null / undefined, ngược lại, nó sẽ trả về đối số thứ hai. Hãy xem một ví dụ.

 null ?? 5 // => 5 3 ?? 5 // => 3

Khi gán giá trị mặc định cho một biến, các nhà phát triển JavaScript thường dựa vào toán tử logic OR , giống như vậy.

 var prevMoney = 1 var currMoney = 0 var noAccount = null var futureMoney = -1 function moneyAmount(money) { return money || `You currently do not own an account in the bank` } console.log(moneyAmount(prevMoney)) // => 1 console.log(moneyAmount(currMoney)) // => `You currently do not own an account in the bank` console.log(moneyAmount(noAccount)) // => `You currently do not own an account in the bank` console.log(moneyAmount(futureMoney))// => -1

Ở trên mình đã tạo một hàm moneyAmount có nhiệm vụ trả về số dư hiện tại của người dùng. Toán tử || được sử dụng để xác định người dùng không có tài khoản. Tuy nhiên, điều đó có nghĩa là gì khi người dùng không có tài khoản? Sẽ chính xác hơn nếu coi không có tài khoản nào là null thay vì 0 vì tài khoản ngân hàng có thể tồn tại mà không có tiền (hoặc âm). Trong ví dụ trên, toán tử || xem 0 là một giá trị lỗi và do đó không đăng ký rằng người dùng của chúng tôi có tài khoản 0 đô la. Hãy sửa lỗi này bằng cách sử dụng toán tử kết hợp nullish.

 var currMoney = 0 var noAccount = null function moneyAmount(money) { return money ?? `You currently do not own an account in the bank` } moneyAmount(currMoney) // => 0 moneyAmount(noAccount) // => `You currently do not own an account in the bank`

Để tóm tắt, toán tử ?? cho phép chúng tôi chỉ định các giá trị mặc định trong khi bỏ qua các giá trị giả như 0 và các chuỗi rỗng.

2. Toán tử ??=

??= còn được gọi là toán tử gán nullish logic và có liên quan chặt chẽ với những gì chúng ta đã được học trước đây. Hãy xem cách chúng gắn kết với nhau.

 var x = null var y = 5 console.log(x ??= y) // => 5 console.log(x = (x ?? y)) // => 5 

Toán tử gán này sẽ chỉ gán một giá trị mới nếu giá trị hiện tại là null hoặc không xác định. Ví dụ trên làm nổi bật cách toán tử này về cơ bản là đường cú pháp để gán nullish. Tiếp theo, hãy xem toán tử này khác với các tham số mặc định như thế nào.

 function gameSettingsWithNullish(options) { options.gameSpeed ??= 1 options.gameDiff ??= 'easy' return options } function gameSettingsWithDefaultParams(gameSpeed=1, gameDiff='easy') { return {gameSpeed, gameDiff} } gameSettingsWithNullish({gameSpeed: null, gameDiff: null}) // => { gameSpeed: 1, gameDiff: 'easy' } gameSettingsWithDefaultParams(null, null) // => { gameSpeed: null, gameDiff: null }

3. Toán tử ?.

Toán tử chuỗi tùy chọn ?. cho phép các nhà phát triển đọc các giá trị của các thuộc tính được lồng sâu trong một chuỗi các đối tượng mà không cần phải xác thực rõ ràng từng tham chiếu trong quá trình thực hiện. Khi một tham chiếu là rỗng, biểu thức ngừng đánh giá và trả về giá trị không xác định. Hãy xem một ví dụ.

 var travelPlans = { destination: 'DC', monday: { location: 'National Mall', budget: 200 } }; const tuesdayPlans = travelPlans.tuesday?.location; console.log(tuesdayPlans) // => undefined

Xem ví dụ tiếp theo.

 function addPlansWhenUndefined(plans, location, budget) { if (plans.tuesday?.location == undefined) { var newPlans = { plans, tuesday: { location: location ?? "Park", budget: budget ?? 200 }, }; } else { newPlans ??= plans; //will only override if newPlans is undefined console.log("Plans have already been added!"); } return newPlans; } var newPlans = addPlansWhenUndefined(travelPlans, "Ford Theatre", null); console.log(newPlans) // => { plans: //{ destination: 'DC', // monday: { location: 'National Mall', budget: 200 } }, // tuesday: { location: 'Ford Theatre', budget: 200 } } newPlans = addPlansWhenUndefined(newPlans, null, null) // logs => Plans have already been added! // returns => newPlans object

Ví dụ trên kết hợp tất cả các toán tử mà chúng ta đã học cho đến nay. Bây giờ chúng ta đã tạo một hàm để thêm kế hoạch. Mình cũng đã sử dụng các toán tử nullish để cung cấp các giá trị mặc định. Hàm này sẽ chấp nhận các giá trị sai như '0' làm tham số hợp lệ. Có nghĩa là ngân sách của chúng tôi có thể được đặt thành 0 mà không có bất kỳ lỗi nào.

4. Toán tử ?

Toán tử bậc ba ?nhận ba toán hạng: một điều kiện, một biểu thức để thực thi nếu điều kiện là đúng và một biểu thức để thực thi nếu điều kiện sai. Hãy xem ví dụ sau:

 function checkCharge(charge) { return (charge > 0) ? 'Ready for use' : 'Needs to charge' } console.log(checkCharge(20)) // => 'Ready for use' console.log(checkCharge(0)) // => 'Needs to charge'

Nếu các bạn đã dành thời gian tìm hiểu JavaScript, các bạn có thể đã thấy toán tử bậc ba trước đây. Tuy nhiên, các bạn có biết rằng toán tử bậc ba có thể được sử dụng để gán biến không?

Chúng ta thậm chí có thể sử dụng nó để gán giá trị nullish.

 var x = 6 var x = (x !== null || x !== undefined) ? x : 3 console.log(x) // => 6

Hãy xem ví dụ tiếp theo:

 function nullishAssignment(x,y) { return (x == null || x == undefined) ? y : x } var x = nullishAssignment(null, 8) // => 8 var y = nullishAssignment(4,8) // => 4

Trước khi kết thúc, hãy sử dụng toán tử bậc ba để cấu trúc lại hàm từ ví dụ trước.

 function addPlansWhenUndefined(plans, location, budget) { var newPlans = plans.tuesday?.location == undefined ? { plans, tuesday: { location: location ?? "Park", budget: budget ?? 200 }, } : console.log("Plans have already been added!"); newPlans ??= plans; return newPlans; }

5. Tài liệu tham khảo

  1. https://medium.com/javascript-in-plain-english/4-powerful-javascript-operators-youve-never-heard-of-487df37114ad
  2. https://developer.mozilla.org/vi/docs/Web/JavaScript/Guide/Expressions_and_Operators

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 500

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 414

- vừa được xem lúc

Một số phương thức với object trong Javascript

Trong Javascript có hỗ trợ các loại dữ liệu cơ bản là giống với hầu hết những ngôn ngữ lập trình khác. Bài viết này mình sẽ giới thiệu về Object và một số phương thức thường dùng với nó.

0 0 136

- vừa được xem lúc

Tìm hiểu về thư viện axios

Giới thiệu. Axios là gì? Axios là một thư viện HTTP Client dựa trên Promise.

0 0 117

- vừa được xem lúc

Imports và Exports trong JavaScript ES6

. Giới thiệu. ES6 cung cấp cho chúng ta import (nhập), export (xuất) các functions, biến từ module này sang module khác và sử dụng nó trong các file khác.

0 0 93

- vừa được xem lúc

Bài toán đọc số thành chữ (phần 2) - Hoàn chỉnh chương trình dưới 100 dòng code

Tiếp tục bài viết còn dang dở ở phần trước Phân tích bài toán đọc số thành chữ (phần 1) - Phân tích đề và những mảnh ghép đầu tiên. Bạn nào chưa đọc thì có thể xem ở link trên trước nhé.

0 0 229