ç¼ç¨è¯è¨é½æå ç½®çæ°æ®ç»æï¼ä½åç§ç¼ç¨è¯è¨çæ°æ®ç»æå¸¸æä¸åä¹å¤ãæ¬æå°è¯ååº JavaScript è¯è¨ä¸å ç½®çæ°æ®ç»æåå ¶å±æ§ãå®ä»¬å¯ä»¥ç¨æ¥æå»ºå ¶ä»çæ°æ®ç»æã
è¯è¨æ¦è¿°å¯¹å¸¸è§çæ°æ®ç±»åæä¾äºç±»ä¼¼çæ»ç»ï¼ä½æ¯æ´å¾åäºåå ¶ä»è¯è¨è¿è¡æ¯è¾ã
å¨æç±»åå弱类åJavaScript æ¯ä¸é¨æçå¨æç±»åç卿è¯è¨ãJavaScript ä¸çåéä¸ä»»ä½ç¹å®å¼ç±»å没æä»»ä½ç´æ¥å ³èï¼ä»»ä½åéé½å¯ä»¥è¢«èµå¼ï¼åè¢«éæ°èµå¼ï¼ä¸ºåç§ç±»åçå¼ï¼
let foo = 42; // foo ç°å¨æ¯æ°å
foo = "bar"; // foo ç°å¨æ¯å符串
foo = true; // foo ç°å¨æ¯å¸å°å¼
JavaScript 乿¯ä¸é¨å¼±ç±»åè¯è¨ï¼è¿æå³çå½è¿ç®æ¶åä¸å¹é çç±»åæ¶ï¼å®å 许éå¼ç±»å转æ¢ï¼è䏿¯æåºç±»åé误ã
const foo = 42; // foo æ¯æ°å
const result = foo + "1"; // JavaScript å° foo 强å¶è½¬æ¢ä¸ºå符串ï¼å æ¤å¯ä»¥å°å
¶ä¸å¦ä¸ä¸ªæä½æ°è¿æ¥èµ·æ¥
console.log(result); // 421
éå¼å¼ºå¶è½¬æ¢æ¯é常æ¹ä¾¿çï¼ä½å½è½¬æ¢å¨ä¸ææåççå°æ¹åçæ¶ï¼æè 䏿æåççæ¹åä¸åæ¶ï¼ä¾å¦ï¼å符串转æ¢ä¸ºæ°åï¼è䏿¯æ°å转æ¢ä¸ºå符串ï¼ï¼å°±ä¼äº§çé¾ä»¥ææ¸çé误ãå¯¹äº symbol å BigIntï¼JavaScript ææç¦æ¢äºæäºéå¼ç±»å转æ¢ã
åå§å¼é¤äº Object 以å¤ï¼ææçç±»åé½å®ä¹äºä¸å¯åçãå¨è¯è¨æåºå±ç´æ¥è¡¨ç¤ºçå¼ãæä»¬å°è¿äºç±»åçå¼ç§°ä¸ºåå§å¼ã
é¤äº null
以å¤ï¼ææçåå§ç±»åé½å¯ä»¥ä½¿ç¨ typeof
è¿ç®ç¬¦è¿è¡æµè¯ãtypeof null
è¿å "object"
ï¼å æ¤å¿
é¡»ä½¿ç¨ === null
æ¥æµè¯ null
ã
é¤äº null
å undefined
以å¤ï¼ææçåå§ç±»å齿坹åºç对象å
è£
ç±»åï¼å®ä»¬ä¸ºå¤çåå§å¼æä¾äºæç¨çæ¹æ³ãä¾å¦ï¼Number
对象æä¾äºå toExponential()
è¿æ ·çæ¹æ³ãå½å¨åå§å¼ä¸è®¿é®å±æ§æ¶ï¼JavaScript ä¼èªå¨å°å¼å
è£
æå¯¹åºçå
è£
对象ï¼å¹¶è®¿é®å¯¹è±¡ä¸ç屿§ãç¶èï¼å¨ null
æ undefined
ä¸è®¿é®å±æ§æ¶ï¼ä¼æåº TypeError
å¼å¸¸ï¼è¿éè¦ä½¿ç¨å¯éé¾è¿ç®ç¬¦ã
对象å è£ å¨ç±»çåè页é¢å 嫿¯ä¸ªç±»åå¯ç¨çæ¹æ³å屿§çæ´å¤ä¿¡æ¯ï¼ä»¥ååå§ç±»åèªèº«è¯ä¹çè¯¦ç»æè¿°ã
Null ç±»åNull ç±»ååªæä¸ä¸ªå¼ï¼null
ã
Undefined ç±»ååªæä¸ä¸ªå¼ï¼undefined
ã
仿¦å¿µä¸è®²ï¼undefined
表示å¼ç¼ºå¤±ï¼null
表示对象缺失ï¼è¿ä¹è§£éäº typeof null === "object"
ï¼ã彿äºä¸è¥¿æ²¡æå¼æ¶ï¼JavaScript è¯è¨é常é»è®¤ä¸º undefined
ï¼
return
è¯å¥ï¼return;
ï¼ï¼éå¼è¿å undefined
ãobj.iDontExist
ï¼ï¼è¿å undefined
ãlet x;
ï¼ï¼éå¼åå§å为 undefined
ãArray.prototype.find()
å Map.prototype.get()
çæ¹æ³ï¼å½æ²¡ææ¾å°å
ç´ æ¶ï¼è¿å undefined
ãnull
卿 ¸å¿è¯è¨ä¸ä½¿ç¨é¢çå°å¾å¤ãæéè¦çå°æ¹æ¯ååé¾çæ«ç«¯ï¼å
¶æ¬¡æ¯ä¸åå交äºçæ¹æ³ï¼å¦ Object.getPrototypeOf()
ãObject.create()
çï¼æ¥åæè¿å null
è䏿¯ undefined
ã
null
æ¯ä¸ä¸ªå
³é®åï¼ä½ undefined
æ¯ä¸ä¸ªæ®éçæ è¯ç¬¦ï¼è¿ä¸ªæ è¯ç¬¦æ°å¥½æ¯ä¸ä¸ªå
¨å±å±æ§ãå®é
ä¸åºå«å¾å°ï¼å 为 undefined
ä¸åºè¯¥è¢«éæ°å®ä¹æè
é®è½ã
Boolean
ç±»å表示ä¸ä¸ªé»è¾å®ä½å¹¶ä¸å
æ¬ä¸¤ä¸ªå¼ï¼true
å false
ã
å¸å°å¼é常ç¨äºæ¡ä»¶è¿ç®ï¼å
æ¬ä¸å
è¿ç®ç¬¦ãif...else
ãwhile
çã
Number
ç±»åæ¯ä¸ç§åºäº IEEE 754 æ åçå精度 64 ä½äºè¿å¶æ ¼å¼çå¼ãå®è½å¤åå¨ 2-1074ï¼Number.MIN_VALUE
ï¼å 21023 à (2 - 2-52)ï¼Number.MAX_VALUE
ï¼ä¹é´çæ£æµ®ç¹æ°ï¼ä»¥åç¸åèå´çè´æµ®ç¹æ°ï¼ä½æ¯å®ä»
è½å®å
¨å°åå¨å¨ -(253 â 1)ï¼Number.MIN_SAFE_INTEGER
ï¼å° 253 â 1ï¼Number.MAX_SAFE_INTEGER
ï¼èå´å
çæ´æ°ãè¶
åºè¿ä¸ªèå´ï¼JavaScript å°ä¸è½å®å
¨å°è¡¨ç¤ºæ´æ°ï¼ç¸åï¼å®ä»¬å°ç±å精度浮ç¹è¿ä¼¼å¼è¡¨ç¤ºãä½ å¯ä»¥ä½¿ç¨ Number.isSafeInteger()
æ£æ¥ä¸ä¸ªæ°æ¯å¦å¨å®å
¨çæ´æ°èå´å
ã
è¶ åºè¡¨ç¤ºèå´çå¼ä¼èªå¨è½¬æ¢ï¼
Number.MAX_VALUE
çæ£å¼è¢«è½¬æ¢ä¸º +Infinity
ãNumber.MIN_VALUE
çæ£å¼è¢«è½¬æ¢ä¸º +0
ãNumber.MAX_VALUE
çè´å¼è¢«è½¬æ¢ä¸º -Infinity
ãNumber.MIN_VALUE
çè´å¼è¢«è½¬æ¢ä¸º -0
ã+Infinity
å -Infinity
è¡ä¸ºç±»ä¼¼äºæ°å¦ä¸çæ 穷大ï¼ä½æ¯æä¸äºç»å¾®çåºå«ï¼æ´å¤ç»èï¼åè§ Number.POSITIVE_INFINITY
å Number.NEGATIVE_INFINITY
ã
Number ç±»åä»
æä¸ä¸ªå
·æå¤ä¸ªè¡¨ç°å½¢å¼çå¼ï¼-0
å +0
é½è¡¨ç¤º 0
ï¼å
¶ä¸ 0
æ¯ +0
çå«åï¼ãå®é
ä¸ï¼è¿ä¸¤è
ä¹é´å 乿²¡æåºå«ï¼ä¾å¦ï¼+0 === -0
æ¯ true
ãç¶èï¼å½ä½ é¤ä»¥ 0 çæ¶åï¼ä½ 伿³¨æå°åºå«ï¼
console.log(42 / +0); // Infinity
console.log(42 / -0); // -Infinity
NaN
ï¼âNot a Numberâï¼æ¯ä¸ä¸ªç¹æ®ç§ç±»çæ°åå¼ï¼å½ç®æ¯è¿ç®çç»æä¸è½è¡¨ç¤ºä¸ºæ°åæ¶ï¼é常ä¼éå°å®ãå®ä¹æ¯ JavaScript ä¸å¯ä¸ä¸çäºèªèº«çå¼ã
è½ç¶ number 卿¦å¿µä¸æ¯ä¸ä¸ªâæ°å¦çå¼âï¼å¹¶ä¸æ»æ¯éå¼çç¼ç 为浮ç¹ç±»åï¼ä½æ¯ JavaScript æä¾äºä½è¿ç®ç¬¦ãå½åºç¨ä½è¿ç®ç¬¦æ¶ï¼number é¦å 转æ¢ä¸º 32 使´æ°ã
夿³¨ï¼ 尽管ä½è¿ç®ç¬¦å¯ä»¥ä½¿ç¨ä½æ©ç æ¥è¡¨ç¤ºå个æ°åä¸çå 个å¸å°å¼ï¼ä½è¿é叏䏿¯æä½³å®è·µãJavaScript æä¾äºè¡¨ç¤ºä¸ç»å¸å°å¼çå ¶ä»æ¹æ³ï¼å¦å¸å°æ°ç»ï¼æå°å¸å°å¼èµå¼ç»å ·å屿§ç对象ï¼ã使©ç ä¹å¾å¾è®©ä»£ç æ´é¾é 读ãçè§£åç»´æ¤ã
å¨é常åéçç¯å¢ä¸ä½¿ç¨æ¤ç±»ææ¯å¯è½å¾å¿ è¦ï¼ä¾å¦å¨è¯å¾åºå¯¹æ¬å°åå¨çéå¶æ¶ï¼æå¨æç«¯æ åµä¸ï¼ä¾å¦å½ç½ç»ä¸çæ¯ä¸ªä½è®¡æ°æ¶ï¼ãåªæå½å®æ¯æåçä¼å大å°çæªæ½æ¶ï¼æåºèèè¿é¡¹ææ¯ã
BigInt ç±»åBigInt
ç±»åæ¯ JavaScript ä¸çæ°ååå§ç±»åï¼å®å¯ä»¥è¡¨ç¤ºä»»æå¤§å°çæ´æ°ãä½¿ç¨ BigIntï¼ä½ å¯ä»¥å®å
¨å°åå¨åæä½å·¨å¤§çæ´æ°ï¼å³ä¾¿æ¯è¶
è¿ Number çå®å
¨æ´æ°éå¶ï¼Number.MAX_SAFE_INTEGER
ï¼ã
BigInt éè¿å¨æ´æ°æ«å°¾æ·»å n
æè°ç¨ BigInt()
彿°å建ã
æ¬ä¾æ¼ç¤ºäºéå¢ Number.MAX_SAFE_INTEGER
ä¼è¿å颿çç»æï¼
// BigInt
const x = BigInt(Number.MAX_SAFE_INTEGER); // 9007199254740991n
x + 1n === x + 2n; // falseï¼å 为 9007199254740992n å 9007199254740993n ä¸ç¸ç
// Number
Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2; // trueï¼å 为é½çäº 9007199254740992
ä½ å¯ä»¥ä½¿ç¨å¤§å¤æ°è¿ç®ç¬¦å¤ç BigIntï¼å
æ¬ +
ã*
ã-
ã**
å %
ââå¯ä¸è¢«ç¦æ¢çæ¯ >>>
ãBigInt 并䏿¯ä¸¥æ ¼çäºæçç¸åæ°å¦å¼ç Numberï¼èæ¯éä¸¥æ ¼ç¸çã
BigInt å¼å number å¼ç¸æ¯ï¼ä¸æ»æ¯æ´ç²¾ç¡®ï¼ä¹ä¸æ»æ¯æ´ä¸ç²¾ç¡®ï¼å 为 BigInt ä¸è½è¡¨ç¤ºå°æ°ï¼ä½è½æ´ç²¾ç¡®å°è¡¨ç¤ºå¤§æ´æ°ãè¿ä¸¤ç§ç±»åé½ä¸è½ç¸äºæ¿ä»£ã妿å¨ç®æ¯è¡¨è¾¾å¼ä¸å° BigInt å¼åå¸¸è§ number 弿··åï¼æè
å®ä»¬ç¸äºéå¼è½¬æ¢ï¼åæåº TypeError
ã
String
ç±»åè¡¨ç¤ºææ¬æ°æ®å¹¶ç¼ç 为 UTF-16 ç å
ç 16 使 ç¬¦å·æ´æ°å¼åºåãå符串ä¸çæ¯ä¸ªå
ç´ å¨å符串ä¸å æ®ä¸ä¸ªä½ç½®ã第ä¸ä¸ªå
ç´ çç´¢å¼ä¸º 0
ï¼ä¸ä¸ä¸ªçç´¢å¼ä¸º 1
ï¼ä¾æ¤ç±»æ¨ãå符串çé¿åº¦æ¯å
¶ä¸ç UTF-16 ç å
çæ°éï¼è¿å¯è½ä¸ Unicode å符çå®é
æ°éä¸ç¬¦ï¼æ´å¤ç»èåè§ String
åè页é¢ã
JavaScript å符串æ¯ä¸å¯åçãè¿æå³ç䏿¦å符串被å建ï¼å°±ä¸å¯è½ä¿®æ¹å®ãåç¬¦ä¸²æ¹æ³ä¼åºäºå½åå符串çå 容å建ä¸ä¸ªæ°çå符串ââä¾å¦ï¼
substring()
è·ååå§å符串çåå符串ã+
ï¼æ concat()
å°ä¸¤ä¸ªå符串串èã使ç¨å符串æ¥è¡¨ç¤ºå¤æçæ°æ®å¯è½å¾è¯±äººãè¿æ ·åä¼å¸¦æ¥çæç好å¤ï¼
fetch()
ä½¿ç¨ Response.text()
æ¶çååºï¼ççï¼èä¸è¿äº API å¯è½åªè½ä¸å符串ä¸å使ç¨ãæç §å¸¸è§ï¼ç¨åç¬¦ä¸²è¡¨ç¤ºä»»ä½æ°æ®ç»ææ¯å¯è½çãä½è¿å¹¶ä¸æ»æ¯ä¸ä¸ªå¥½ä¸»æãä¾å¦ï¼ä½¿ç¨ä¸ä¸ªåé符ï¼å¯ä»¥æ¨¡æä¸ä¸ªå表ï¼ç¶è JavaScript æ°ç»æ´éåï¼ãä¸å¹¸çæ¯ï¼å½åéç¬¦æ¯æä¸ªâå表âå ç´ æ¶ï¼å表就éå°ç ´åãè¿æ¶å¯ä»¥éæ©è½¬ä¹å符ï¼ççãææè¿äºé½éè¦çº¦å®ï¼å¹¶é æä¸å¿ è¦çç»´æ¤è´æ ã
è¡¨ç¤ºææ¬æ°æ®æ¶æ¨è使ç¨å符串ãå½éè¦è¡¨ç¤ºå¤æçæ°æ®æ¶ï¼ä½¿ç¨å符串解æå¹¶ä½¿ç¨éå½çæ½è±¡ã
Symbol ç±»åSymbol
æ¯ä¸ç§å¯ä¸å¹¶ä¸ä¸å¯åçåå§å¼ï¼å¹¶ä¸å¯ä»¥ç¨ä½å¯¹è±¡å±æ§çé®ï¼å¦ä¸ï¼ã卿äºç¨åºè¯è¨ä¸ï¼Symbol ä¹è¢«ç§°ä½âååâãsymbol çç®çæ¯å建å¯ä¸ç屿§é®ï¼ä¿è¯ä¸ä¼ä¸å
¶ä»ä»£ç ä¸çé®äº§çå²çªã
å¨è®¡ç®æºç§å¦ä¸ï¼å¯¹è±¡æ¯æå åä¸çå¼ï¼è¿åå åå¯è½è¢«æ è¯ç¬¦å¼ç¨ãå¨ JavaScript ä¸ï¼å¯¹è±¡æ¯å¯ä¸å¯åçå¼ãäºå®ä¸ï¼å½æ°ä¹æ¯å ·æå¯è°ç¨è¿ä¸ªé¢å¤è½åç对象ã
屿§å¨ JavaScript ä¸ï¼å¯¹è±¡å¯ä»¥è¢«ç使¯ä¸ä¸ªå±æ§çéåãç¨å¯¹è±¡åé¢éè¯æ³ä¼åå§åä¸ç»æéç屿§ï¼ç¶åï¼å¯ä»¥æ·»å åç§»é¤å±æ§ãå¯¹è±¡å±æ§çä»·äºé®å¼å¯¹ã屿§é®è¦ä¹æ¯å符串ï¼è¦ä¹æ¯ symbolãå½å ¶ä»ç±»åï¼å¦æ°åï¼ç¨äºç´¢å¼å¯¹è±¡æ¶ï¼å¼ä¼éå¼å°è½¬å为å符串ã屿§å¼å¯ä»¥æ¯ä»»ä½ç±»åçå¼ï¼å æ¬å ¶ä»å¯¹è±¡ï¼ä»èå¯ä»¥æå»ºå¤æçæ°æ®ç»æã
æä¸¤ç§ç±»åçå¯¹è±¡å±æ§ï¼æ°æ®å±æ§å访é®å¨å±æ§ãæ¯ä¸ªå±æ§é½æå¯¹åºçç¹æ§ãæ¯ä¸ªç¹æ§ç± JavaScript 弿è¿è¡å
é¨è®¿é®ï¼ä½æ¯ä½ å¯ä»¥éè¿ Object.defineProperty()
设置å®ä»¬ï¼æéè¿ Object.getOwnPropertyDescriptor()
读åå®ä»¬ãä½ å¯ä»¥å¨ Object.defineProperty()
页é¢é
读æ´å¤æå
³åç§ç»å¾®å·®å«çä¿¡æ¯ã
æ°æ®å±æ§å°é®ä¸å¼ç¸å ³èãå®å¯ä»¥ç±ä»¥ä¸ç¹æ§æè¿°ï¼
value
éè¿å±æ§ç get 访é®è·åå¼ãå¯ä»¥æ¯ä»»æç JavaScript å¼ã
writable
å¸å°å¼ï¼è¡¨ç¤ºå±æ§æ¯å¦å¯ä»¥éè¿èµå¼è¿è¡ä¿®æ¹ã
enumerable
å¸å°å¼ï¼è¡¨ç¤ºå±æ§æ¯å¦å¯ä»¥éè¿ for...in
循ç¯è¿è¡æä¸¾ãå¦è¯·åé
屿§ç坿䏾æ§åæææï¼ä»¥äºè§£æä¸¾æ§å¦ä½ä¸å
¶ä»å½æ°åè¯æ³äº¤äºã
configurable
å¸å°å¼ï¼è¡¨ç¤ºå±æ§æ¯å¦å¯ä»¥å é¤ï¼æ¯å¦å¯ä»¥æ´æ¹ä¸ºè®¿é®å¨å±æ§ï¼ä»¥åæ¯å¦å¯ä»¥æ´æ¹å ¶ç¹æ§ã
å°é®ä¸ä¸¤ä¸ªè®¿é®å¨å½æ°ï¼get
å set
ï¼ç¸å
³èï¼ä»¥è·åæè
åå¨å¼ã
夿³¨ï¼ éè¦çæ¯ï¼æè¯å°å®æ¯è®¿é®å¨å±æ§ââè䏿¯è®¿é®å¨æ¹æ³ãæä»¬å¯ä»¥å°å½æ°ä½ä¸ºå¼ç»ä¸ä¸ª JavaScript 对象æä¾è¿ä¼¼äºç±»ç访é®å¨ââä½è¿å¹¶ä¸è½ä½¿è¯¥å¯¹è±¡æä¸ºç±»ã
访é®å¨å±æ§æä»¥ä¸ç¹æ§ï¼
get
彿§è¡å¼ç get è®¿é®æ¶ï¼ä½¿ç¨ä¸ä¸ªç©ºçåæ°å表è°ç¨å½æ°è·å屿§å¼ãåè§ getterãå¯è½æ¯ undefined
ã
set
使ç¨å
å«èµäºçå¼çåæ°è°ç¨å½æ°ãæ¯å½å°è¯æ´æ¹æå®å±æ§æ¶æ§è¡ãåè§ setterãå¯è½æ¯ undefined
ã
enumerable
å¸å°å¼ï¼è¡¨ç¤ºå±æ§æ¯å¦å¯ä»¥éè¿ for...in
循ç¯è¿è¡æä¸¾ãå¦è¯·åé
屿§ç坿䏾æ§åæææï¼ä»¥äºè§£æä¸¾æ§å¦ä½ä¸å
¶ä»å½æ°åè¯æ³äº¤äºã
configurable
å¸å°å¼ï¼è¡¨ç¤ºå±æ§æ¯å¦å¯ä»¥å é¤ï¼æ¯å¦å¯ä»¥æ´æ¹ä¸ºè®¿é®å¨å±æ§ï¼ä»¥åæ¯å¦å¯ä»¥æ´æ¹å ¶ç¹æ§ã
对象çååæåå¦ä¸ä¸ªå¯¹è±¡æè
null
ââ仿¦å¿µä¸è®²ï¼å®æ¯å¯¹è±¡çéè屿§ï¼é常表示为 [[Prototype]]
ã对象ç [[Prototype]]
ç屿§ä¹å¯ä»¥å¨å¯¹è±¡èªèº«ä¸è®¿é®ã
对象æ¯ä¸´æ¶çé®å¼å¯¹ï¼å æ¤ç»å¸¸è¢«ç¨ä½ mapãä¸è¿ï¼è¿å¯è½åå¨äººä½å·¥ç¨å¦ãå®å
¨æ§åæ§è½æ¹é¢çé®é¢ãè¯·ä½¿ç¨ Map
åå¨ä»»æçæ°æ®ãMap
åèå¯¹ä½¿ç¨æ®é对象åä½¿ç¨ map åå¨é®å¼ä¹é´çå©å¼è¿è¡äºæ´è¯¦ç»ç讨论ã
å½è¡¨ç¤ºæ¥ææ¶ï¼æå¥½çéæ©æ¯ä½¿ç¨ JavaScript ä¸å
ç½®ç Date
å·¥å
፱ȋ
æ°ç»æ¯æ´æ°é®ç屿§å length
屿§ä¹é´æçç¹æ®å
³ç³»ç常è§å¯¹è±¡ã
æ¤å¤ï¼æ°ç»ç»§æ¿äº Array.prototype
çä¸ç»æä½æ°ç»çä¾¿æ·æ¹æ³ãä¾å¦ï¼indexOf()
ï¼æç´¢æ°ç»ä¸çä¸ä¸ªå¼ï¼æ push()
ï¼åæ°ç»è¿½å ä¸ä¸ªå
ç´ ï¼ï¼ççãè¿ä½¿å¾æ°ç»æä¸ºè¡¨ç¤ºæåºå表ççæ³éæ©ã
ç±»ååæ°ç»è¡¨ç¤ºåºå±äºè¿å¶ç¼å²åºçç±»æ°ç»è§å¾ï¼å¹¶ä¸æä¾äºä¸æ°ç»ç¸å¯¹åºç类似è¯ä¹çæ¹æ³ãâç±»ååæ°ç»âæ¯ä¸ç³»åæ°æ®ç»æçæ»è¯æ¯è¯ï¼å
æ¬ Int8Array
ãFloat32Array
ççãè·åæ´å¤ç»èï¼è¯·æ¥çç±»ååæ°ç»é¡µãç±»ååæ°ç»éå¸¸ä¸ ArrayBuffer
å DataView
ä¸èµ·ä½¿ç¨ã
è¿äºæ°æ®ç»ææå¯¹è±¡çå¼ç¨å½ä½é®ãSet
å WeakSet
表示å¯ä¸å¼çéåï¼è Map
å WeakMap
表示é®å¼ç¸å
³èçéåã
ä½ ä¹å¯ä»¥èªå·±å®ç° Map
å Set
ãç¶èï¼å 为对象ä¸è½æ¯è¾ï¼ä¾å¦ï¼å¨ <
âå°äºâçæä¹ä¸ï¼ï¼å¦ä¸æ¹é¢ï¼å¼æä¹æ²¡ææ´é²å¯¹è±¡çæ£å彿°ï¼å æ¤æ¥æ¾æ§è½å¿
宿¯çº¿æ§çãå®ä»¬çåçå®ç°ï¼å
æ¬ WeakMap
ï¼æçè¿ä¼¼å¯¹æ°å°å¸¸æ°æ¶é´çæ¥æ¾æ§è½ã
é常ï¼è¦å°æ°æ®ç»å®å° DOM èç¹ï¼å¯ä»¥ç´æ¥å¨å¯¹è±¡ä¸è®¾ç½®å±æ§ï¼æä½¿ç¨ data-*
屿§ãè¿æ ·åçç¼ºç¹æ¯ï¼å¨åä¸ä¸ä¸æä¸è¿è¡çä»»ä½èæ¬é½å¯ä»¥ä½¿ç¨è¿äºæ°æ®ãè Map
å WeakMap
åå¯ä»¥è½»æ¾å°å°æ°æ®éè½å°ç»å®å°å¯¹è±¡ä¸ã
WeakMap
å WeakSet
åªå
许å°å¯åå¾åæ¶çå¼ä½ä¸ºé®ï¼è¿äºé®è¦ä¹æ¯å¯¹è±¡ï¼è¦ä¹æ¯æªæ³¨åç symbolï¼å³ä½¿é®ä»å¨éåä¸ï¼ä¹å¯è½è¢«åæ¶ãå®ä»¬ä¸é¨ç¨äºä¼åå
å使ç¨ã
JSONï¼JavaScript Object Notationï¼æ¯ä¸ç§è½»éçº§çæ°æ®äº¤æ¢æ ¼å¼ï¼æ¥æºäº JavaScriptï¼åæ¶ä¹è¢«å¤ç§è¯è¨æä½¿ç¨ãJSON æå»ºäºéç¨çæ°æ®ç»æï¼å¯ä»¥å¨ä¸åç¯å¢ä¹é´ä¼ è¾ï¼çè³å¯ä»¥è·¨è¯è¨ä¼ è¾ãæ´å¤ç»èï¼è¯·åè§ JSON
ã
JavaScript æä¸ä¸ªå ç½®å¯¹è±¡çæ ååºã请é 读åèäºè§£æå ³å ç½®å¯¹è±¡çæ´å¤ä¿¡æ¯ã
强å¶ç±»å转æ¢å¦ä¸æè¿°ï¼JavaScript æ¯ä¸é¨å¼±ç±»åè¯è¨ãè¿æå³çä½ å¯ä»¥ç»å¸¸ä½¿ç¨ä¸é¢æç±»åä¸åçç±»åçå¼ï¼JavaScript è¯è¨å°ä¸ºä½ æå®è½¬æ¢ä¸ºæ£ç¡®çç±»åã为æ¤ï¼JavaScript å®ä¹äºä¸äºå¼ºå¶è½¬æ¢è§åã
åå§å¼å¼ºå¶è½¬æ¢åå§å¼å¼ºå¶è½¬æ¢è¿ç¨ç¨äºå¾å°ææçåå§å¼ï¼ä½å¯¹å®é çç±»ååºè¯¥æ¯ä»ä¹å¹¶æ²¡æå¼ºççå好ãé常æ åµä¸å¯ä»¥æ¥å stringãnumber æ BigIntãä¾å¦ï¼
Date()
æé 彿°ï¼å½å®æ¶å°ä¸ä¸ªä¸æ¯ Date
å®ä¾çåæ°æ¶ââåç¬¦ä¸²è¡¨ç¤ºæ¥æå符串ï¼è number 表示æ¶é´æ³ã+
è¿ç®ç¬¦ââ妿æä¸ªæä½æ°æ¯åç¬¦ä¸²ï¼æ§è¡å符串串èï¼å¦åï¼æ§è¡æ°åç¸å ã==
è¿ç®ç¬¦ââ妿æä¸ªæä½æ°æ¯åå§å¼ï¼èå¦ä¸ä¸ªæä½æ°æ¯å¯¹è±¡ï¼objectï¼ï¼å该对象å°è½¬æ¢ä¸ºæ²¡æé¦éç±»åçåå§å¼ã妿å¼å·²ç»æ¯åå§å¼ï¼åæ¤æä½ä¸ä¼è¿è¡ä»»ä½è½¬æ¢ã对象å°ä¾æ¬¡è°ç¨å®ç [Symbol.toPrimitive]()
ï¼å° default
ä½ä¸º hint å¼ï¼ãvalueOf()
å toString()
æ¹æ³ï¼å°å
¶è½¬æ¢ä¸ºåå§å¼ã注æï¼åå§å¼è½¬æ¢ä¼å¨ toString()
æ¹æ³ä¹åè°ç¨ valueOf()
æ¹æ³ï¼è¿ä¸ number 强å¶è½¬æ¢çè¡ä¸ºç¸ä¼¼ï¼ä½ä¸å符串强å¶è½¬æ¢ä¸åã
[Symbol.toPrimitive]()
æ¹æ³ï¼å¦æåå¨ï¼åå¿
é¡»è¿ååå§å¼ââè¿å对象ï¼ä¼å¯¼è´ TypeError
ãå¯¹äº valueOf()
å toString()
ï¼å¦æå
¶ä¸ä¸ä¸ªè¿å对象ï¼å忽ç¥å
¶è¿åå¼ï¼ä»è使ç¨å¦ä¸ä¸ªçè¿åå¼ï¼å¦æä¸¤è
é½ä¸åå¨ï¼æè
两è
齿²¡æè¿ååå§å¼ï¼åæåº TypeError
ãä¾å¦ï¼å¨ä¸é¢ç代ç ä¸ï¼
console.log({} + []); // "[object Object]"
{}
å []
齿²¡æ [Symbol.toPrimitive]()
æ¹æ³ã{}
å []
é½ä» Object.prototype.valueOf
ç»§æ¿ valueOf()
ï¼å
¶è¿å对象èªèº«ãå 为è¿å弿¯å¯¹è±¡ï¼æä»¥å®è¢«å¿½ç¥ãå æ¤ï¼è°ç¨ toString()
æ¹æ³ã{}.toString()
è¿å "[object Object]"
ï¼è [].toString()
è¿å ""
ï¼å æ¤è¿ä¸ªç»ææ¯å®ä»¬ç串èï¼"[object Object]"
ã
å¨å¼ºå¶è½¬æ¢ä¸ºä»»æçåå§ç±»åæ¶ï¼[Symbol.toPrimitive]()
æ¹æ³æ»æ¯ä¼å
è°ç¨ãåå§å¼å¼ºå¶è½¬æ¢çè¡ä¸ºéå¸¸ä¸ number 强å¶è½¬æ¢ç±»ä¼¼ï¼å 为ä¼å
è°ç¨äº valueOf()
ï¼ç¶èï¼æçèªå®ä¹ [Symbol.toPrimitive]()
æ¹æ³ç对象å¯ä»¥éæ©è¿åä»»æçåå§å¼ãDate
å Symbol
对象æ¯å¯ä¸éå [Symbol.toPrimitive]()
æ¹æ³ç对象ãDate.prototype[Symbol.toPrimitive]()
å° "string"
è§ä¸º "default"
hintï¼è Symbol.prototype[Symbol.toPrimitive]()
å¿½ç¥ hint å¹¶å§ç»è¿åä¸ä¸ª symbolã
æä¸¤ç§æ°åç±»åï¼Number å BigIntãææ¶åï¼JavaScript è¯è¨ææä½¿ç¨ number æ BigIntï¼ä¾å¦ Array.prototype.slice()
ï¼å
¶ä¸ç´¢å¼å¿
é¡»æ¯ numberï¼ï¼å
¶ä»æ¶åï¼å®å¯è½å®¹å¿å¹¶ä¸æ ¹æ®æä½æ°çç±»åæ§è¡ä¸åçè¿ç®ãæå
³ä¸å
许ä»å
¶ä»ç±»åéå¼è½¬æ¢çä¸¥æ ¼å¼ºå¶è½¬æ¢è¿ç¨ï¼è¯·åé
number 强å¶è½¬æ¢å BigInt 强å¶è½¬æ¢ã
æ°åç±»å强å¶è½¬æ¢ä¸ number 强å¶è½¬æ¢å ä¹ç¸åï¼åªæ¯ BigInt ä¼æåæ ·è¿åï¼è䏿¯å¼èµ· TypeError
ãå¼ºå¶æ°åç±»å转æ¢ç¨äºææç®æ¯è¿ç®ï¼å 为å®ä»¬éè½½äº number å BigInt ç±»åãå¯ä¸ä¾å¤çæ¯ä¸å
å ï¼å®æ»æ¯å®æ½ number 强å¶è½¬æ¢ã
é¤äº NullãUndefined 以å Symbol ç±»å以å¤ï¼ææçæ°æ®ç±»å齿å®ä»¬åèªç强å¶è½¬æ¢è¿ç¨ãæ´å¤ç»èï¼è¯·åè§å符串强å¶è½¬æ¢ãå¸å°å¼å¼ºå¶è½¬æ¢ä»¥å对象强å¶è½¬æ¢ã
ä½ å¯è½å·²ç»æ³¨æå°ï¼æä¸ç§ä¸åçè·¯å¾å¯ä»¥å°å¯¹è±¡è½¬æ¢ä¸ºåå§å¼ï¼
[Symbol.toPrimitive]("default")
â valueOf()
â toString()
[Symbol.toPrimitive]("number")
â valueOf()
â toString()
[Symbol.toPrimitive]("string")
â toString()
â valueOf()
卿ææ
åµä¸ï¼[Symbol.toPrimitive]()
妿åå¨ï¼å¿
é¡»å¯è°ç¨å¹¶è¿ååå§å¼ï¼è妿 valueOf
æ toString
ä¸å¯è°ç¨æè¿å对象ï¼å®ä»¬å°è¢«å¿½ç¥ãå¨è¿ç¨ç»ææ¶ï¼å¦ææåï¼ç»æä¿è¯æ¯åå§å¼ãç¶åï¼ç±æ¤äº§ççåå§å¼ä¼æ ¹æ®ä¸ä¸æè¿ä¸æ¥çè¿è¡å¼ºå¶ç±»å转æ¢ã
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4