JavaScript ä¸çå¼é½å ·æç¹å®çç±»åãä¾å¦ï¼åç¬¦ä¸²ææ°åã
å¨ JavaScript 䏿 8 ç§åºæ¬çæ°æ®ç±»åï¼è¯æ³¨ï¼7 ç§åå§ç±»åå 1 ç§å¼ç¨ç±»åï¼ãå¨è¿éï¼æä»¬å°å¯¹å®ä»¬è¿è¡å¤§ä½çä»ç»ï¼å¨ä¸ä¸ç« ä¸ï¼æä»¬å°è¯¦ç»è®¨è®ºå®ä»¬ã
æä»¬å¯ä»¥å°ä»»ä½ç±»åçå¼åå ¥åéãä¾å¦ï¼ä¸ä¸ªåéå¯ä»¥å¨åä¸å»æ¯ä¸ªå符串ï¼ä¸ä¸å»å°±åå¨ä¸ä¸ªæ°åï¼
// 没æé误
let message = "hello";
message = 123456;
å 许è¿ç§æä½çç¼ç¨è¯è¨ï¼ä¾å¦ JavaScriptï¼è¢«ç§°ä¸ºâå¨æç±»åâï¼dynamically typedï¼çç¼ç¨è¯è¨ï¼æææ¯è½ç¶ç¼ç¨è¯è¨ä¸æä¸åçæ°æ®ç±»åï¼ä½æ¯ä½ å®ä¹çåéå¹¶ä¸ä¼å¨å®ä¹åï¼è¢«éå¶ä¸ºæä¸æ°æ®ç±»åã
Number ç±»å
let n = 123;
n = 12.345;
number ç±»åä»£è¡¨æ´æ°åæµ®ç¹æ°ã
æ°åå¯ä»¥æå¾å¤æä½ï¼æ¯å¦ï¼ä¹æ³ *ã餿³ /ãå æ³ +ãåæ³ - ççã
é¤äºå¸¸è§çæ°åï¼è¿å
æ¬æè°çâç¹æ®æ°å¼ï¼âspecial numeric valuesâï¼âä¹å±äºè¿ç§ç±»åï¼Infinityã-Infinity å NaNã
-
Infinity代表æ°å¦æ¦å¿µä¸ç æ 穷大 âãæ¯ä¸ä¸ªæ¯ä»»ä½æ°åé½å¤§çç¹æ®å¼ãæä»¬å¯ä»¥éè¿é¤ä»¥ 0 æ¥å¾å°å®ï¼
alert( 1 / 0 ); // Infinityæè å¨ä»£ç ä¸ç´æ¥ä½¿ç¨å®ï¼
alert( Infinity ); // Infinity -
NaN代表ä¸ä¸ªè®¡ç®é误ã宿¯ä¸ä¸ªä¸æ£ç¡®çæè ä¸ä¸ªæªå®ä¹çæ°å¦æä½æå¾å°çç»æï¼æ¯å¦ï¼alert( "not a number" / 2 ); // NaNï¼è¿æ ·ç餿³æ¯é误çNaNæ¯ç²æ§çãä»»ä½å¯¹NaNçè¿ä¸æ¥æ°å¦è¿ç®é½ä¼è¿åNaNï¼alert( NaN + 1 ); // NaN alert( 3 * NaN ); // NaN alert( "not a number" / 2 - 1 ); // NaNæä»¥ï¼å¦æå¨æ°å¦è¡¨è¾¾å¼ä¸æä¸ä¸ª
NaNï¼ä¼è¢«ä¼ æå°æç»ç»æï¼åªæä¸ä¸ªä¾å¤ï¼NaN ** 0ç»æä¸º1ï¼ã
å¨ JavaScript ä¸åæ°å¦è¿ç®æ¯å®å ¨çãæä»¬å¯ä»¥åä»»ä½äºï¼é¤ä»¥ 0ï¼å°éæ°åå符串è§ä¸ºæ°åï¼ççã
èæ¬æ°¸è¿ä¸ä¼å 为ä¸ä¸ªè´å½çé误ï¼âæ»äº¡âï¼è忢ãæåçæ
åµä¸ï¼æä»¬ä¼å¾å° NaN çç»æã
ç¹æ®çæ°å¼å±äº ânumberâ ç±»åãå½ç¶ï¼å¯¹âç¹æ®çæ°å¼âè¿ä¸ªè¯çä¸è¬è®¤è¯æ¯ï¼å®ä»¬å¹¶ä¸æ¯æ°åã
æä»¬å°å¨ æ°åç±»å ä¸èä¸å¦ä¹ æ°åçæ´å¤ç»èã
BigInt ç±»å
å¨ JavaScript ä¸ï¼ânumberâ ç±»åæ æ³å®å
¨å°è¡¨ç¤ºå¤§äº (253-1)ï¼å³ 9007199254740991ï¼ï¼æå°äº -(253-1) çæ´æ°ã
æ´åç¡®ç说ï¼ânumberâ ç±»åå¯ä»¥å卿´å¤§çæ´æ°ï¼æå¤ 1.7976931348623157 * 10308ï¼ï¼ä½è¶
åºå®å
¨æ´æ°èå´ Â±(253-1) ä¼åºç°ç²¾åº¦é®é¢ï¼å ä¸ºå¹¶éæææ°åé½éååºå®ç 64 ä½åå¨ãå æ¤ï¼å¯è½åå¨çæ¯âè¿ä¼¼å¼âã
ä¾å¦ï¼è¿ä¸¤ä¸ªæ°åï¼æ£å¥½è¶ åºäºå®å ¨æ´æ°èå´ï¼æ¯ç¸åçï¼
console.log(9007199254740991 + 1); // 9007199254740992
console.log(9007199254740991 + 2); // 9007199254740992
ä¹å°±æ¯è¯´ï¼ææå¤§äº (253-1) ç奿°é½ä¸è½ç¨ ânumberâ ç±»ååå¨ã
å¨å¤§å¤æ°æ
åµä¸ï¼Â±(253-1) èå´å°±è¶³å¤äºï¼ä½ææ¶åæä»¬éè¦æ´ä¸ªèå´éå¸¸å¤§çæ´æ°ï¼ä¾å¦ç¨äºå¯ç 妿微ç§ç²¾åº¦çæ¶é´æ³ã
BigInt ç±»åæ¯æè¿è¢«æ·»å å° JavaScript è¯è¨ä¸çï¼ç¨äºè¡¨ç¤ºä»»æé¿åº¦çæ´æ°ã
å¯ä»¥éè¿å° n éå å°æ´æ°åæ®µçæ«å°¾æ¥å建 BigInt å¼ã
// å°¾é¨ç "n" è¡¨ç¤ºè¿æ¯ä¸ä¸ª BigInt ç±»å
const bigInt = 1234567890123456789012345678901234567890n;
ç±äºå¾å°éè¦ BigInt ç±»åçæ°åï¼æä»¬å¨è¿æ²¡æå¯¹å
¶è¿è¡è®²è§£ï¼æä»¬å¨åç¬çç« è BigInt ä¸ä¸é¨å¯¹å
¶è¿è¡äºä»ç»ãå½ä½ éè¦ä½¿ç¨é£æ ·ç大æ°åçæ¶åï¼å¯ä»¥å»é
è¯»è¯¥ç« èã
ç®å Firefox/Chrome/Edge/Safari å·²ç»æ¯æ BigInt äºï¼ä½ IE è¿æ²¡æã
ä½ å¯ä»¥æ¥ç MDN BigInt å ¼å®¹æ§è¡¨ 以äºè§£åªäºçæ¬çæµè§å¨å·²ç»æ¯æ BigInt äºã
String ç±»å
JavaScript ä¸çåç¬¦ä¸²å¿ é¡»è¢«æ¬å¨å¼å·éã
let str = "Hello";
let str2 = 'Single quotes are ok too';
let phrase = `can embed another ${str}`;
å¨ JavaScript ä¸ï¼æä¸ç§å å«åç¬¦ä¸²çæ¹å¼ã
- åå¼å·ï¼
"Hello". - åå¼å·ï¼
'Hello'. - åå¼å·ï¼
`Hello`.
åå¼å·ååå¼å·é½æ¯âç®åâå¼ç¨ï¼å¨ JavaScript ä¸ä¸¤è å 乿²¡æä»ä¹å·®å«ã
åå¼å·æ¯ åè½æ©å± å¼å·ãå®ä»¬å
许æä»¬éè¿å°åéå表达å¼å
è£
å¨ ${â¦} ä¸ï¼æ¥å°å®ä»¬åµå
¥å°å符串ä¸ãä¾å¦ï¼
let name = "John";
// åµå
¥ä¸ä¸ªåé
alert( `Hello, ${name}!` ); // Hello, John!
// åµå
¥ä¸ä¸ªè¡¨è¾¾å¼
alert( `the result is ${1 + 2}` ); // the result is 3
${â¦} å
ç表达å¼ä¼è¢«è®¡ç®ï¼è®¡ç®ç»æä¼æä¸ºå符串çä¸é¨åãå¯ä»¥å¨ ${â¦} å
æ¾ç½®ä»»ä½ä¸è¥¿ï¼è¯¸å¦å为 name çåéï¼æè
è¯¸å¦ 1 + 2 çç®æ°è¡¨è¾¾å¼ï¼æè
å
¶ä»ä¸äºæ´å¤æçã
éè¦æ³¨æçæ¯ï¼è¿ä» ä» å¨åå¼å·å ææï¼å ¶ä»å¼å·ä¸å 许è¿ç§åµå ¥ã
alert( "the result is ${1 + 2}" ); // the result is ${1 + 2}ï¼ä½¿ç¨åå¼å·åä¸ä¼è®¡ç® ${â¦} ä¸çå
容ï¼
æä»¬ä¼å¨ å符串 ä¸èä¸å¦ä¹ åç¬¦ä¸²çæ´å¤ç»èã
å¨ä¸äºè¯è¨ä¸ï¼å个å符æä¸ä¸ªç¹æ®ç âcharacterâ ç±»åï¼å¨ C è¯è¨å Java è¯è¨ä¸è¢«ç§°ä¸º âcharâã
å¨ JavaScript 䏿²¡æè¿ç§ç±»åãåªæä¸ç§ string ç±»åï¼ä¸ä¸ªå符串å¯ä»¥å
å«é¶ä¸ªï¼ä¸ºç©ºï¼ãä¸ä¸ªæå¤ä¸ªå符ã
Boolean ç±»åï¼é»è¾ç±»åï¼
boolean ç±»åä»
å
å«ä¸¤ä¸ªå¼ï¼true å falseã
è¿ç§ç±»åé常ç¨äºåå¨è¡¨ç¤º yes æ no çå¼ï¼true æå³ç âyesï¼æ£ç¡®âï¼false æå³ç ânoï¼ä¸æ£ç¡®âã
æ¯å¦ï¼
let nameFieldChecked = true; // yes, name field is checked
let ageFieldChecked = false; // no, age field is not checked
å¸å°å¼ä¹å¯ä½ä¸ºæ¯è¾çç»æï¼
let isGreater = 4 > 1;
alert( isGreater ); // trueï¼æ¯è¾çç»ææ¯ "yes"ï¼
æ´è¯¦ç»çå 容å°ä¼å¨ é»è¾è¿ç®ç¬¦ ä¸èä¸ä»ç»ã
null å¼
ç¹æ®ç null å¼ä¸å±äºä¸è¿°ä»»ä½ä¸ç§ç±»åã
宿æäºä¸ä¸ªç¬ç«çç±»åï¼åªå
å« null å¼ï¼
let age = null;
ç¸æ¯è¾äºå
¶ä»ç¼ç¨è¯è¨ï¼JavaScript ä¸ç null 䏿¯ä¸ä¸ªâ对ä¸åå¨ç object çå¼ç¨âæè
ânull æéâã
JavaScript ä¸ç null ä»
ä»
æ¯ä¸ä¸ªä»£è¡¨âæ âãâ空âæâ弿ªç¥âçç¹æ®å¼ã
ä¸é¢ç代ç 表示 age æ¯æªç¥çã
undefined å¼
ç¹æ®å¼ undefined å null 䏿 ·èªæç±»åã
undefined çå«ä¹æ¯ æªè¢«èµå¼ã
妿ä¸ä¸ªåé已被声æï¼ä½æªè¢«èµå¼ï¼é£ä¹å®çå¼å°±æ¯ undefinedï¼
let age;
alert(age); // å¼¹åº "undefined"
仿æ¯ä¸è®²ï¼å¯ä»¥æ¾å¼å°å° undefined èµå¼ç»åéï¼
let age = 100;
// å°å¼ä¿®æ¹ä¸º undefined
age = undefined;
alert(age); // "undefined"
â¦â¦ä½æ¯ä¸å»ºè®®è¿æ ·åãé常ï¼ä½¿ç¨ null å°ä¸ä¸ªâ空âæè
âæªç¥âçå¼åå
¥åéä¸ï¼è undefined åä¿çä½ä¸ºæªè¿è¡åå§åçäºç©çé»è®¤åå§å¼ã
Object ç±»åå Symbol ç±»å
object ç±»åæ¯ä¸ä¸ªç¹æ®çç±»åã
å
¶ä»ææçæ°æ®ç±»åé½è¢«ç§°ä¸ºâåå§ç±»åâï¼å 为å®ä»¬çå¼åªå
å«ä¸ä¸ªåç¬çå
容ï¼åç¬¦ä¸²ãæ°åæè
å
¶ä»ï¼ãç¸åï¼object åç¨äºå¨åæ°æ®éå忴夿çå®ä½ã
å 为å®é常éè¦ï¼æä»¥æä»¬å¯¹å
¶è¿è¡åç¬è®²è§£ãå¨å
åå¦ä¹ äºåå§ç±»ååï¼æä»¬å°ä¼å¨ 对象 ä¸ç« ä¸ä»ç» objectã
symbol ç±»åç¨äºå建对象çå¯ä¸æ è¯ç¬¦ãæä»¬å¨è¿éæå° symbol ç±»åæ¯ä¸ºäºå®æ´æ§ï¼ä½æä»¬è¦å¨å¦å® object ç±»åååå¦ä¹ å®ã
typeof è¿ç®ç¬¦
typeof è¿ç®ç¬¦è¿ååæ°çç±»åã彿们æ³è¦åå«å¤çä¸åç±»åå¼çæ¶åï¼æè
æ³å¿«éè¿è¡æ°æ®ç±»åæ£éªæ¶ï¼é常æç¨ã
对 typeof x çè°ç¨ä¼ä»¥å符串çå½¢å¼è¿åæ°æ®ç±»åï¼
typeof undefined // "undefined"
typeof 0 // "number"
typeof 10n // "bigint"
typeof true // "boolean"
typeof "foo" // "string"
typeof Symbol("id") // "symbol"
typeof Math // "object" (1)
typeof null // "object" (2)
typeof alert // "function" (3)
æåä¸è¡å¯è½éè¦é¢å¤ç说æï¼
Mathæ¯ä¸ä¸ªæä¾æ°å¦è¿ç®çå 建objectãæä»¬ä¼å¨ æ°åç±»å ä¸èä¸å¦ä¹ å®ãæ¤å¤ä» ä½ä¸ºä¸ä¸ªobjectç示ä¾ãtypeof nullçç»æä¸º"object"ãè¿æ¯å®æ¹æ¿è®¤çtypeofçé误ï¼è¿ä¸ªé®é¢æ¥èªäº JavaScript è¯è¨çæ©æé¶æ®µï¼å¹¶ä¸ºäºå ¼å®¹æ§èä¿çäºä¸æ¥ãnullç»å¯¹ä¸æ¯ä¸ä¸ªobjectãnullæèªå·±çç±»åï¼å®æ¯ä¸ä¸ªç¹æ®å¼ãtypeofçè¡ä¸ºå¨è¿éæ¯é误çãtypeof alertçç»ææ¯"function"ï¼å 为alertå¨ JavaScript è¯è¨ä¸æ¯ä¸ä¸ªå½æ°ãæä»¬ä¼å¨ä¸ä¸ç« å¦ä¹ 彿°ï¼é£æ¶æä»¬ä¼äºè§£å°ï¼å¨ JavaScript è¯è¨ä¸æ²¡æä¸ä¸ªç¹å«ç âfunctionâ ç±»åã彿°é¶å±äºobjectç±»åã使¯typeofä¼å¯¹å½æ°åºåå¯¹å¾ ï¼å¹¶è¿å"function"ãè¿ä¹æ¯æ¥èªäº JavaScript è¯è¨æ©æçé®é¢ã仿æ¯ä¸è®²ï¼è¿ç§è¡ä¸ºæ¯ä¸æ£ç¡®çï¼ä½å¨å®é ç¼ç¨ä¸å´é常æ¹ä¾¿ã
typeof(x) è¯æ³ä½ å¯è½è¿ä¼éå°å¦ä¸ç§è¯æ³ï¼typeof(x)ãå®ä¸ typeof x ç¸åã
ç®åç¹è¯´ï¼typeof æ¯ä¸ä¸ªæä½ç¬¦ï¼ä¸æ¯ä¸ä¸ªå½æ°ãè¿éçæ¬å·ä¸æ¯ typeof çä¸é¨åã宿¯æ°å¦è¿ç®åç»çæ¬å·ã
é常ï¼è¿æ ·çæ¬å·éå
å«çæ¯ä¸ä¸ªæ°å¦è¡¨è¾¾å¼ï¼ä¾å¦ (2 + 2)ï¼ä½è¿éå®åªå
å«ä¸ä¸ªåæ° (x)ãä»è¯æ³ä¸è®²ï¼å®ä»¬å
è®¸å¨ typeof è¿ç®ç¬¦åå
¶åæ°ä¹é´ä¸æç©ºæ ¼ï¼æäºäººåæ¬¢è¿æ ·ç飿 ¼ã
æäºäººæ´åæ¬¢ç¨ typeof(x)ï¼å°½ç®¡ typeof x è¯æ³æ´ä¸ºå¸¸è§ã
æ»ç»
JavaScript ä¸æå «ç§åºæ¬çæ°æ®ç±»åã
- ä¸ç§åå§æ°æ®ç±»åï¼åºæ¬æ°æ®ç±»åï¼ï¼
numberç¨äºä»»ä½ç±»åçæ°åï¼æ´æ°ææµ®ç¹æ°ï¼å¨Â±(253-1)èå´å çæ´æ°ãbigintç¨äºä»»æé¿åº¦çæ´æ°ãstringç¨äºå符串ï¼ä¸ä¸ªå符串å¯ä»¥å å« 0 个æå¤ä¸ªåç¬¦ï¼æä»¥æ²¡æåç¬çåå符类åãbooleanç¨äºtrueåfalseãnullç¨äºæªç¥çå¼ ââ åªæä¸ä¸ªnullå¼çç¬ç«ç±»åãundefinedç¨äºæªå®ä¹çå¼ ââ åªæä¸ä¸ªundefinedå¼çç¬ç«ç±»åãsymbolç¨äºå¯ä¸çæ è¯ç¬¦ã
- 以åä¸ç§éåå§æ°æ®ç±»åï¼å¤ææ°æ®ç±»åï¼ï¼
objectç¨äºæ´å¤æçæ°æ®ç»æã
æä»¬å¯ä»¥éè¿ typeof è¿ç®ç¬¦æ¥çåå¨å¨åéä¸çæ°æ®ç±»åã
- é常ç¨ä½
typeof xï¼ä½typeof(x)ä¹å¯è¡ã - 以å符串çå½¢å¼è¿åç±»ååç§°ï¼ä¾å¦
"string"ã typeof nullä¼è¿å"object"ââ è¿æ¯ JavaScript ç¼ç¨è¯è¨çä¸ä¸ªé误ï¼å®é ä¸å®å¹¶ä¸æ¯ä¸ä¸ªobjectã
卿¥ä¸æ¥çç« èä¸ï¼æä»¬å°éç¹ä»ç»åå§ç±»åå¼ï¼å½ä½ ææ¡äºåå§æ°æ®ç±»ååï¼æä»¬å°ç»§ç»å¦ä¹ objectã
è¯è®º
<code>æ ç¾æå ¥åªæå 个è¯ç代ç ï¼æå ¥å¤è¡ä»£ç å¯ä»¥ä½¿ç¨<pre>æ ç¾ï¼å¯¹äºè¶ è¿ 10 è¡ç代ç ï¼å»ºè®®ä½ ä½¿ç¨æ²ç®±ï¼plnkrï¼JSBinï¼codepenâ¦ï¼