Trong bài viết này, chúng ta sẽ xem xét một số khái niệm lạ và kỳ lạ về Javascript. Một số có thể bạn biết và một số có thể không. Vì vậy, hãy theo dõi cho đến khi kết thúc.
Không xác định
Ở chế độ không nghiêm ngặt, điều đó thực sự có thể xảy ra (mặc dù thật khó tin!) để gán giá trị cho số nhận dạng không xác định được cung cấp toàn cầu:
Tuy nhiên, trong cả chế độ không nghiêm ngặt và chế độ nghiêm ngặt, bạn có thể tạo một biến cục bộ của tên không xác định. Nhưng một lần nữa, đây là một ý tưởng khủng khiếp!
Không phải số (NaN)
Bất kỳ phép toán toán nào bạn thực hiện mà không có cả hai toán hạng là số (hoặc giá trị có thể được hiểu là số thông thường trong cơ số 10 hoặc cơ số 16) sẽ dẫn đến thao tác không tạo ra số hợp lệ, trong trường hợp đó bạn sẽ nhận được giá trị NaN.
Nói cách khác, 'loại không phải số là số!' Hoan hô những cái tên và ngữ nghĩa khó hiểu.
Đủ dễ dàng, phải không? Tôi đã sử dụng tiện ích toàn cầu tích hợp sẵn có tên isNaN (..) và nó cho chúng tôi biết giá trị có phải là NaN hay không. Vấn đề đã được giải quyết! Không quá nhanh.
Tiện ích isNaN (..) có một lỗ hổng nghiêm trọng. Có vẻ như nó đã cố gắng hiểu theo nghĩa đen của NaN (“Không phải số”) - công việc của nó về cơ bản là “kiểm tra xem thứ được chuyển vào không phải là một số hay là một số”. Nhưng điều đó không hoàn toàn chính xác:
Rõ ràng, "foo" theo nghĩa đen không phải là một con số. Đó là một chuỗi nhưng khi bạn thực hiện isNaN ("16") thì nó sẽ trả về false bởi vì khi javascript thực hiện chuyển đổi ngầm định, nó sẽ hoàn toàn chuyển đổi thành number, đó là lý do tại sao nó trả về false
Infinities
Các nhà phát triển từ các ngôn ngữ biên dịch truyền thống như C có lẽ đã quen với việc gặp lỗi trình biên dịch hoặc ngoại lệ thời gian chạy, chẳng hạn như chia cho 0 đối với một hoạt động như:
Tuy nhiên, trong JS, thao tác này được xác định rõ ràng và dẫn đến giá trị là Infinity (hay còn gọi là Number.POSITIVE_INFINITY). Không ngạc nhiên:
Zeros
Mặc dù nó có thể gây nhầm lẫn cho người đọc có đầu óc toán học, JavaScript có cả số 0 thông thường (hay còn gọi là số 0 dương +0) và số 0 âm. Trước khi tôi giải thích tại sao -0 tồn tại, chúng ta nên kiểm tra cách JS xử lý nó, vì nó có thể khá khó hiểu.
Bên cạnh việc được chỉ định theo nghĩa đen là -0, số 0 âm cũng là kết quả của một số phép toán toán học nhất định. Ví dụ:
Hãy xem thêm một số ví dụ về số zeros:
Null
Vì vậy, như chúng ta biết typeof là một toán tử, bằng cách đó chúng ta kiểm tra kiểu của một biến như sau:
Như bạn có thể nhận thấy, tôi đã loại trừ null khỏi danh sách trên. Nó đặc biệt — đặc biệt theo nghĩa là nó có lỗi khi được kết hợp với toán tử typeof:
Sẽ rất tuyệt (và đúng!) Nếu nó trả về null, nhưng lỗi ban đầu này trong JS đã tồn tại trong gần hai thập kỷ và có khả năng sẽ không bao giờ được sửa vì có rất nhiều nội dung web hiện có dựa trên hành vi lỗi của nó mà 'sửa 'Lỗi sẽ tạo ra nhiều' lỗi 'hơn và phá vỡ nhiều phần mềm web.
Null là giá trị nguyên thủy duy nhất falsy nhưng cũng trả về object từ kiểm tra typeof.
BONUS
Giá trị giả là gì?
Giá trị falsy (đôi khi được viết là falsey) là một giá trị được coi là sai khi gặp trong ngữ cảnh Boolean.
Giá trị Chân lý là gì?
Trong JavaScript, giá trị true là giá trị được coi là true khi gặp trong ngữ cảnh Boolean.
Tổng kết
Nó không phải là kết thúc, có rất nhiều thứ như thế này mà tôi sẽ đề cập đến nó trong tương lai, Vì vậy, hãy cân nhắc để làm theo. Và nếu bạn học được điều gì đó mới thì hãy đồng ý.
- Xem thêm tại website Anothemes hoặc page facebook Anothemes