Trong JavaScript, như trong các ngôn ngữ lập trình khác, có các từ khóa cho một số giá trị đặc biệt. Đây là:
//The answer is
6;
6;
6, //The answer is
6;
6;
7, //The answer is
6;
6;
8, //The answer is
6;
6;
9, var s = "primitive";
s.length; // 9
0, var s = "primitive";
s.length; // 9
1, var s = "primitive";
s.length; // 9
2.Giá trị không xác định
Giá trị
//The answer is
6;
6;
6 biểu thị sự không chắc chắn. Một biến sẽ có một giá trị như vậy nếu chúng tôi khai báo nó, nhưng không ghi giá trị cho nó:var s = "primitive";
s.length; // 9
4Giá trị này có thể được gán rõ ràng cho một biến:
var s = "primitive";
s.length; // 9
5Khai báo một biến mà không gán một giá trị cho nó. Hiển thị giá trị của biến được tạo trên màn hình.
Giá trị null
Giá trị
//The answer is
6;
6;
7 có nghĩa là "không có gì". Ví dụ: chúng ta có thể gán một giá trị như vậy cho một biến để chỉ ra rằng không có gì ở đó:var s = "primitive";
s.length; // 9
7Đặt biến thành
//The answer is
6;
6;
7. In biến này vào màn hình.Giá trị đúng và sai
Các giá trị
//The answer is
6;
6;
8 và //The answer is
6;
6;
9 được sử dụng cho những thứ yêu cầu hai câu trả lời - có hoặc không.Đặt biến thành
//The answer is
6;
6;
8. Hiển thị biến này trên màn hình.Đặt biến thành
//The answer is
6;
6;
9. Hiển thị biến này trên màn hình.Giá trị nan
Giá trị
var s = "primitive";
s.length; // 9
0 có nghĩa là không phải là một số. Giá trị này có được khi bạn cố gắng thực hiện các hoạt động toán học không phải với các số, mà với một cái gì đó khác. Ví dụ: một nỗ lực để nhân một chuỗi với một số sẽ cho một giá trị như vậy:var v;
typeof v; // "undefined"
v = 1;
typeof v; // "number"
v = "1";
typeof v; // "string"
v = [];
typeof v; // "object"
v = {};
typeof v; // "object"
v = null;
typeof v; // "object" OOPS!
4Bất kỳ hoạt động nào với
var s = "primitive";
s.length; // 9
0 vẫn dẫn đến kết quả var s = "primitive";
s.length; // 9
0:var v;
typeof v; // "undefined"
v = 1;
typeof v; // "number"
v = "1";
typeof v; // "string"
v = [];
typeof v; // "object"
v = {};
typeof v; // "object"
v = null;
typeof v; // "object" OOPS!
7Tạo hai chuỗi. Nhân chúng lên nhau. In kết quả của phép nhân trên màn hình.
Giá trị vô cực và -Infinity
Các giá trị như
var s = "primitive";
s.length; // 9
1 và var s = "primitive";
s.length; // 9
2 thu được nếu một số số được chia cho 0. JavaScript không đưa ra lỗi, trong trường hợp như vậy, như trong các ngôn ngữ lập trình khác, nhưng trả về các giá trị sau:typeof doesnotexist; //"undefined"
0Chia số
typeof doesnotexist; //"undefined"
1 cho typeof doesnotexist; //"undefined"
2. Hiển thị kết quả trên màn hình.Chia số
typeof doesnotexist; //"undefined"
3 cho typeof doesnotexist; //"undefined"
2. Hiển thị kết quả trên màn hình. Đây là bộ phim hiểu biết của tôi về loạt phim của tôi. Tôi sẽ viết về các khái niệm khác nhau để chia sẻ sự hiểu biết của tôi. Tôi mong được học một cái gì đó mới từ bạn.
Nhìn vào mã sau và đoán xem câu trả lời sẽ là gì.
var x = 5;
x++;
console.log[x];var x = "5";
x++;
console.log[x];
Nó sẽ là một lỗi cho trường hợp thứ hai? Nó sẽ là 6? Tôi đã ở trong địa ngục khi tôi được hỏi câu hỏi này.
//The answer is
6;
6;
Bạn có biết những gì đã xảy ra ở đây?
typeof doesnotexist; //"undefined"
5 là một chuỗi trong trường hợp thứ hai. Nó đã được chuyển đổi thành một số và sau đó tăng lên.Bạn có biết tại sao tôi đặt những câu hỏi như vậy ở trên không? Bởi vì chúng tôi sẽ thảo luận về các loại nguyên thủy và giá trị đặc biệt.Primitive Types and Special Values.
Hãy bắt đầu nào
JavaScript có các loại nguyên thủy sau:
//The answer is
6
6;
6;typeof doesnotexist; //"undefined"
7typeof doesnotexist; //"undefined"
8typeof doesnotexist; //"undefined"
9typeof typeof []; //"string"typeof []; //"object"
0
typeof "object"; //"string"typeof typeof []; //"string"typeof []; //"object"
1
typeof "object"; //"string"
Loại nguyên thủy là gì? Một loại nguyên thủy là một giá trị ở mức thấp nhất của việc thực hiện ngôn ngữ; Hãy nghĩ về nó như một khối xây dựng. Nó không phải là
typeof typeof []; //"string"typeof []; //"object"2 và không có
typeof "object"; //"string"
typeof typeof []; //"string"typeof []; //"object"3 để gọi.
typeof "object"; //"string"
Đợi tí! Nó không có ____53 để gọi? Cả đời tôi đã làm điều này
var s = "primitive";
s.length; // 9
Làm thế quái nào chúng ta gọi độ dài trên
typeof typeof []; //"string"typeof []; //"object"5? Câu trả lời cho câu hỏi này là
typeof "object"; //"string"
typeof typeof []; //"string"typeof []; //"object"6 mà JS làm cho chính nó. JS chuyển đổi
typeof "object"; //"string"
typeof typeof []; //"string"typeof []; //"object"5 thành một đối tượng của lớp
typeof "object"; //"string"
typeof typeof []; //"string"typeof []; //"object"8 và chúng tôi gọi các phương thức của nó.
typeof "object"; //"string"
Trong JavaScript, các biến không có loại. Giá trị làm.
Khi chúng tôi gán một giá trị cho một biến, thì chúng tôi sử dụng toán tử như
typeof typeof []; //"string"typeof []; //"object"9 để tìm ra giá trị và để xác định một cái gì đó về danh tính của nó, loại của nó, loại của nó.
typeof "object"; //"string"
NB: Khi chúng tôi làm typeof NaN; //"number"var number = 5; //5
0, chúng tôi không hỏi loại biến; Thay vào đó, chúng tôi yêu cầu loại giá trị hiện tại trong x.: When we do
number - "four"; //NaN
var nan = Number["n/a"]; //NaN
typeof NaN; //"number"var number = 5; //50 we do not ask the type of variable; rather, we ask for the type of value currently in x.
number - "four"; //NaN
var nan = Number["n/a"]; //NaN
Bây giờ, đọc lại văn bản táo bạo ở trên, và nó sẽ có ý nghĩa hơn rất nhiều.
var v;
typeof v; // "undefined"
v = 1;
typeof v; // "number"
v = "1";
typeof v; // "string"
v = [];
typeof v; // "object"
v = {};
typeof v; // "object"
v = null;
typeof v; // "object" OOPS!
Tất cả các đầu ra là hợp lý ngoại trừ phần cuối,
typeof NaN; //"number"var number = 5; //51 đó là
number - "four"; //NaN
var nan = Number["n/a"]; //NaN
typeof typeof []; //"string"typeof []; //"object"2? Đúng! Đây được cho là một lỗi trong JavaScript và bây giờ họ không thể sửa nó vì nó sẽ phá vỡ rất nhiều mã. Bây giờ, nó rất hợp lý tại sao
typeof "object"; //"string"
//The answer is
6;
6;
7 không phải là một loại nguyên thủy.typeof doesnotexist; //"undefined"
Nó kỳ lạ. Nếu biến không tồn tại, loại của nó vẫn còn.
//The answer is
6;
6;
6. Bạn không nghĩ nó nên là một cái gì đó giống như typeof NaN; //"number"var number = 5; //55 ?. Nó sẽ không biểu cảm hơn?
number - "four"; //NaN
var nan = Number["n/a"]; //NaN
JavaScript coi biến
typeof NaN; //"number"var number = 5; //55 là loại
number - "four"; //NaN
var nan = Number["n/a"]; //NaN
//The answer is
6;
6;
6, và nó là một trong những điều quan trọng để quan tâm.Ngoài ra, chúng ta có thể suy ra một thực tế thú vị từ điều này. Toán tử
typeof typeof []; //"string"typeof []; //"object"9 là toán tử duy nhất có thể tham khảo một cái gì đó không tồn tại và vẫn không gây ra lỗi. Xin hãy chú ý đến điều này nếu và khi bạn thử điều này trong sản xuất: p.
typeof "object"; //"string"
Quan sát các trích dẫn đó trong giá trị trả về từ
typeof typeof []; //"string"typeof []; //"object"9, đó là một
typeof "object"; //"string"
typeof doesnotexist; //"undefined"
7. typeof typeof []; //"string"typeof []; //"object"9 đảm bảo rằng nó sẽ luôn trả về chuỗi.
typeof "object"; //"string"
typeof typeof []; //"string"typeof []; //"object"
typeof "object"; //"string"
Tôi đoán ví dụ này phải giúp hiểu
typeof typeof []; //"string"typeof []; //"object"9 tốt hơn.
typeof "object"; //"string"
Giá trị đặc biệt
Trong các loại nguyên thủy, chúng tôi có các giá trị đặc biệt mà chúng tôi nên tập trung vào, có khá nhiều, nhưng chúng tôi sẽ tập trung vào hai giá trị đặc biệt mọc lên thường xuyên hơn chúng tôi muốn.
Nan
Nhiều người trong chúng ta nghĩ về nó như một từ viết tắt của không phải là một số, mà không chính xác. Trong JavaScript, ________ 20 là một giá trị đặc biệt có nghĩa là một số không hợp lệ.
typeof NaN; //"number"var number = 5; //5
number - "four"; //NaN
var nan = Number["n/a"]; //NaN
Tôi hy vọng những ví dụ này có ý nghĩa và ví dụ cuối cùng là một cách có thể và được khuyến nghị để tạo NAN. Nan có một tài sản phi thường. Đó là giá trị duy nhất không bằng chính nó. is the only value that is not equal to itself.
NaN === NaN //false
Vì vậy, nếu bộ ba bằng lời nói dối với chúng tôi, chúng tôi cần một cách để xác định xem một giá trị có phải là nan hay không.
NaN === NaN //false
4 Đây là một chức năng tiện ích có thể giúp chúng tôi xác định.isNaN[32]; //false
isNaN[NaN]; //true
isNaN["AmINaN"]; //true OOPS!
Lạ lùng! Có phải là nó không? Điều này đã làm việc cho hai ví dụ đầu tiên và đưa ra câu trả lời sai trong ví dụ cuối cùng. Vâng, vì việc thực hiện nó.
NaN === NaN //false
5 Chuyển đổi đối số được chuyển sang NaN === NaN //false
6 và sau đó kiểm tra xem đó có phải là var s = "primitive";
s.length; // 9
0 hay không.Vì vậy, ví dụ cuối cùng đã ép buộc một cái gì đó như thế này:
isNaN[Number["AmINaN"]];
//we all know that
Number["AmINaN"]; //NaN
//as a result
isNaN[NaN]; //true
Làm thế nào bạn sẽ kiểm tra xem một số là NAN? Có một chức năng tiện ích khác sẽ luôn cung cấp cho bạn câu trả lời chính xác.
//The answer is
6;
6;
0Dưới đây là một phương thức tùy chỉnh sẽ không dẫn đến một giá trị không chính xác.
//The answer is
6;
6;
10 âm
Hãy để nói về một giá trị đặc biệt khác tồn tại,
NaN === NaN //false
8. Tôi đã hoàn toàn lãng quên rằng một cái gì đó như NaN === NaN //false
8 tồn tại trong JavaScript. 0 âm về cơ bản là 0 với bit có chữ ký.//The answer is
6;
6;
2Kỳ dị! Tất cả các hoạt động trên dường như là kỳ lạ. Nó cảm thấy như họ đang gian lận. Triple bằng lời nói dối với chúng ta, lớn hơn và ít hơn là hành xử kỳ lạ.
Vì vậy, làm thế nào người ta có thể xác định liệu chúng ta có
NaN === NaN //false
8 hay không. Có một chức năng tại giải cứu của chúng tôi. Trong ES6, chúng tôi đã có isNaN[32]; //false
isNaN[NaN]; //true
isNaN["AmINaN"]; //true OOPS!
1 đến giải cứu của chúng tôi.//The answer is
6;
6;
3Có một cách khác để xác định
NaN === NaN //false
8//The answer is
6;
6;
4Chúng ta có thể sử dụng thực tế này để tạo chức năng tùy chỉnh của chúng ta.
//The answer is
6;
6;
5Đây là từ phía tôi, mọi người, và tôi sẽ quay lại để thảo luận về sự ép buộc trong JavaScript. Tôi rất thích nghe từ bạn, thảo luận với tôi trên Twitter hoặc Ping tôi trên LinkedIn.coercion in Javascript. I would love to hear from you, discuss with me on Twitter or ping me on LinkedIn.
Hẹn gặp lại bạn