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

Các toán tử dễ gây nhầm lẫn trong javascript.

1 0 28

Người đăng: Huynh Quang Nam

Theo Viblo Asia

Có rất nhiều javascript operators như toán tử số học, gán, chuỗi ... Nhưng với các toán tử dưới đây thì có thể làm nhiều bạn còn nhầm lẫn nếu chưa hiểu rõ về chúng.

1. Nullish Coalescing Operator (??)

Cú pháp: a ?? b

  • Nếu a được định nghĩa không phải là Nullish (Null hoặc Undefined) thì kết quả trả về là a.
  • Nếu a là Nullish (Null hoặc Undefined) thì kết quả trả về là b.
let a = null
let b = 10
console.log(a ?? b) //10
let a = 20
console.log(a ?? b ?? c) //20

2. Logical Nullish Assignment (??=)

Cú pháp: a ??= b

Nhìn tương tự như trên có khác thì chỉ khác thêm dấu "=" thôi và nó sẽ như thế này.

  • Nếu a được định nghĩa và không phải là Nullist thì kết quả trả về vẫn là a thôi.
  • Nếu a ngược lại điều trên thì a sẽ được gán kết quả của b.
let a = null
let b = 10
console.log(a ??= b) //a = 10
// kết hợp với toán tử ?? xem nó có rất gì và này nọ không.
let a = null
console.log(a ??= null ?? undefined ?? 30) //a = 30

3. Optional Chaining Operator (?.)

Cú pháp: obj?.prop

  • Trong quá trình thao tác với object thì sẽ gặp các trường hợp cần phải xác định thuộc tính có tồn tại hay không thì với toán tử (?.) nó giải quyết vấn đề đó. Với tham chiếu có giá trị Null hoặc Undefined thì kết quả sẽ luôn là Undefined thay vì trả về lỗi giúp code trở nên ngắn gọn hơn.
let obj= { person:{ firstName:"John", lastName:"Doe", occupation: { company:'capscode', position:'developer' }, }, fullName: function(){ console.log(`Full Name is: ${this.person.firstName} ${this.person.lastName}`) }
} // Bạn đang muốn get ra thông tin thuộc tính nhưng không biết các thuộc tính đó có tồn tại hay không // để thực hiện các tiến trình tiếp theo nhưng không log lỗi trong quá trình thực hiện. // Sử dụng optional chaining với nested object obj.person.address.city != undefine ? (làm abc) : (làm xyz)
// Mặc định chạy dòng này sẽ log TypeError: Cannot read property 'city' of undefined obj.person?.address.city != undefine ? (làm abc) : (làm xyz) //TypeError: Cannot read property 'city' of undefined // Đừng làm như này nhé... cái bạn quan tâm là address có exist không mà ? obj.person.address?.city != undefine ? (làm abc) : (làm xyz) // Như này ok nhé ! // sử dụng optional chaining với function
// tương tự như cách triển khai trên
obj.fullname() //Full Name is: John Doe
obj.detailName() //TypeError: obj.detailName is not a function
obj.detailName?.() //undefined => nhận lại được thứ bạn cần !
  • Kết hợp tất cả lại ta có thêm một cách dùng mới tùy biến khác thay vì dùng if else hay dùng toán tử 3 ngôi rồi.
let obj = { value: { number: 10 }
}
let a = null; a ??= null ?? undefined ?? obj.coordinates?.x?.number ?? 20 //a = 20

Kết luận

Các toán tử trên giúp chúng ta giảm bớt đi thời gian thao tác với object hay function. Nếu bạn vẫn còn chưa rõ về các toán tử trên thì link bên dưới sẽ giúp bạn có cái nhìn tổng quát hơn.

Link: https://capscode.hashnode.dev/javascript-amazing-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

Type annotation vs Type Inference - Typescript

Trong bài viết này, chúng ta sẽ tìm hiểu kỹ về TypeScript bằng cách tìm hiểu sự khác biệt giữa kiểu chú thích và kiểu suy luận. Tôi sẽ cho rằng bạn có một số kinh nghiệm về JavaScript và biết về các kiểu cơ bản, như chuỗi, số và boolean.

0 0 32

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

Type Annotation và Type Inference trong TypeScript là gì?

Khi làm việc với javascript chắc hẳn các bạn đã quá quen với việc dùng biến mà không cần phải quan tâm đến kiểu dữ liệu của nó là gì phải không? Đúng là mới đầu tiếp cận với Typescript mình cũng cảm thấy nó khá là phiền vì cần phải khai báo đủ type để nó chặt chẽ hơn. Lúc đó mình còn nghĩ: " JavaScr

0 0 25

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

Tìm hiểu TypeScript và kiến thức cơ bản

TypeScript là gì. TypeScript sử dụng tất cả các tính năng của của ECMAScript 2015 (ES6) như classes, modules.

0 0 35

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

TypeScript - P1: Vì sao TypeScript được yêu thích đến vậy?

Trải nghiệm thực tế. Trước khi là một Web Developer, tôi là một Mobile Developer và Java là thứ mà tôi từng theo đuổi.

0 1 58

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

4 Tính năng rất hay từ TypeScript

Xin chào các bạn hôm nay mình xin chia sẽ những tính năng rất hay của TypeScript (TS), các bạn cùng tìm hiểu nhé. Ngoài việc set Type cho biến, tham số hay function thì ví dụ khi bạn nhìn vào một tham

0 0 82