Đăng bởi:
Trần DungĐăng ngày:
Feb 28, 2021Đăng ở:
Kiến Thức Cơ BảnTrong bài viết này, chúng ta sẽ cùng nhau tìm hiểu một số điểm đặc biệt, khác lạ
và khá là "dị" trong JavaScript
và ES6
. Vì trong lập trình JavaScript
chúng ta nên sử dụng "use strict"
để code trở nên dễ hiểu và cú pháp rành mạch rõ ràng hơn, do đó chúng ta sẽ chỉ đề cập đến các vấn đề trong strict
mode thôi nhé
Như chúng ta đã biết khi sử dụng JavaScript, chúng ta sẽ có một object đặc biệt là window
. Đây là một Global Object
, tức là chúng ta có thể dùng ở bất kỳ chỗ nào trong môi trường JS của trang hiện tại. Khi khai báo biến với từ khóa var
, biến sẽ được gán thành thuộc tính của window
. Ví dụ
"use strict"
var a = 5
console.log(a) // 5
console.log(window.a) // 5
Tuy nhiên khi khai báo với từ khóa let
hay const
thì các biến này sẽ không trở thành thuộc tính của window
.
"use strict"
var a = 5
let b = 2
const c = 1
console.log(window.a) // 5
console.log(window.b) // undefined
console.log(window.c) // undefined
console.log(b) // 2
console.log(c) // 1
Các bạn lưu ý điều này nhé
Trong phần này chúng ta sẽ tìm hiểu sự khác biệt giữa hai kiểu dữ liệu null
và undefined
. Cái này chúng ta cần nắm rõ để viết điều kiện cho đúng. Trước tiên chúng ta sẽ hiểu hai kiểu dữ liệu này
null
là một giá trị rỗngnull
phải được assign let test = null
console.log(test) // null
Mặt khác, null
là một object.
console.log(typeof test) // object
undefined
là một kiểu mà biến được thể hiện nhưng chưa được định nghĩa. Ví dụ
let a
console.log(a) // undefined
Không giống như null
, undefined
có type là undefined
console.log(typeof a) // undefined
Ngoài ra, có 2 cách khác để thể hiện được một biến là undefine
undefined
let b = undefined
console.log(b) // undefined
let obj = {}
console.log(obj.a) // undefined
Trong JavaScript có 6 giá trị falsy
. Cả null và undefined là 2 trong số 6 giá trị này.
truthy
.Tiếp theo, trong JavaScript có 6 kiểu dữ liệu nguyên thủy
Còn lại tất cả là object (ví dụ: functions, objects, arrays, ...)
Tuy nhiên chú ý là khi xét kiểu của null thì lại object.
let a = null
console.log(typeof a) // null
Khí sử dụng gía trị mặc định cho function. Chúng ta sẽ xem xét ví dụ sau
const test = (str = 'hello world') => console.log(str)
test("nguyen thanh tuan") // nguyen thanh tuan
test() // hello world
test(undefined) // hello world
test(null) // null
Như vậy, với tham số mặc định thì undefined sẽ sử dụng giá trị mặc định còn null thì không.
Như ở phần trên, mình có ghi null !== undefined nhưng null == undefined
, chúng ta sẽ tìm hiểu rõ hơn ở đây nhé (Một biến bao gồm kiểu dữ liệu
và giá trị
)
So sánh == là một kiểu so sánh yếu, khi so sánh ==, chúng ta sẽ đưa hai biến về cùng một kiểu rồi so sánh giá trị của chúng (dựa theo falsy hoặc truthy).
console.log(77 == '77') // true
Khi so sánh như trên, '77' (kiểu string) sẽ được đưa về thành 77 (kiểu number), do đó hai giá trị bằng nhau và bằng 77.
Nếu chúng ta sử dụng === thì kết quả sẽ là false
vì hai kiểu dữ liệu khác nhau (number và string)
console.log(77 === '77') // false
Chúng ta sẽ tìm hiểu phần gây nhầm lẫn nhiều là so sánh các giá trị falsy
với nhau.
false == 0
// true
0 == ""
// true
"" == false
// true
null == null
// true
undefined == undefined
// true
null == undefined
// true
Tuy nhiên nếu so sánh hai gía trị này với các giá trị falsy còn lại thì đều trả về false
null == false
// false
undefined == ''
// false
null == 0
// false
...
NaN == null
// false
NaN == undefined
// false
NaN == NaN
// false
Bình luận
Để lại bình luận
Email và số điện thoại sẽ không được công khai. Những trường bắt buộc được đánh dấu *