JavaScript æ¯ä¸é¨å¤èå¼ç卿è¯è¨ï¼å®å å«ç±»åãè¿ç®ç¬¦ãæ åå ç½®å¯¹è±¡åæ¹æ³ãå®çè¯æ³åºäº Java å C è¯è¨ââè¿ä¸¤é¨è¯è¨ç许å¤ç»æä¹éç¨äº JavaScriptãJavaScript 使ç¨å¯¹è±¡åååç±»æ¯æé¢å对象ç¼ç¨ãå®ä¹æ¯æå½æ°å¼ç¼ç¨ï¼å ä¸ºå½æ°æ¯å¤´ç对象ï¼å®è½éè¿è¡¨è¾¾å¼è½»æ¾å建ï¼å¹¶åå ¶ä»å¯¹è±¡ä¸æ ·è¿è¡ä¼ éã
æ¬æçç®çæ¯ä½ä¸ºåç§ JavaScript è¯è¨ç¹æ§çå¿«éæ¦è§ï¼ä¸ºæå ¶ä»è¯è¨ï¼å¦ C æ Javaï¼èæ¯ç读è ç¼åã
æ°æ®ç±»åæä»¬ä»ä»»ä½ç¼ç¨è¯è¨é½ä¸å¯ç¼ºå°çæå»ºåå¼å§ï¼ç±»åãJavaScript ç¨åºæä½å¼ï¼è¿äºå¼é½æåèªçç±»åãJavaScript æä¾äº 7 ç§åå§ç±»åï¼
true
å false
ââé常ç¨äºæ¡ä»¶é»è¾ãå ¶ä»ç称为对象ã常è§ç对象类åå æ¬ï¼
å¨ JavaScript ä¸ï¼å½æ°ä¸æ¯ç¹æ®çæ°æ®ç»æââå®ä»¬åªæ¯ç¹æ®çãè½è¢«è°ç¨ç对象类åã
æ°å¼JavaScript æä¸¤ç§å ç½®çæ°åç±»åï¼Number å BigIntã
Number ç±»åæ¯åºäº IEEE 754 è§èç 64 ä½å精度浮ç¹å¼ï¼è¿æå³çæ´æ°åªè½å¨ -(253 â 1) å 253 â 1 ä¹é´æ 精度æå¤±ãå®å ¨ç表示ï¼ä»¥åæµ®ç¹æ°åªè½åå¨å° 1.79 à 10308ãå¨ number ä¸ï¼JavaScript æ æ³åºåæµ®ç¹æ°åæ´æ°ã
console.log(3 / 2); // 1.5ï¼è䏿¯ 1
æä»¥è¡¨é¢ä¸çæ´æ°å®é 䏿¯æµ®ç¹æ°ãç±äºéç¨äº IEEE 754 ç¼ç ï¼æµ®ç¹æ°è¿ç®ææ¶å¯è½ä¸æ¯ç²¾ç¡®çã
console.log(0.1 + 0.2); // 0.30000000000000004
å¯¹äºæå¾ æ´æ°çè¿ç®ï¼ä¾å¦ä½è¿ç®ï¼number ä¼è¢«è½¬æ¢ä¸º 32 使´æ°ã
Number åé¢éä¹å¯ä»¥ä½¿ç¨åç¼è¡¨ç¤ºè¿å¶ï¼äºè¿å¶ãå «è¿å¶ãåè¿å¶ãåå è¿å¶ï¼ï¼æä½¿ç¨ææ°åç¼ã
console.log(0b111110111); // 503
console.log(0o767); // 503
console.log(0x1f7); // 503
console.log(5.03e2); // 503
BigInt ç±»åæ¯ä»»æé¿åº¦çæ´æ°ãå®çè¡ä¸ºä¸ C çæ´æ°ç±»å类似ï¼å¦ï¼é¤æ³åé¶æªæï¼ï¼é¤äºå®è½ä»»æå¢é¿ãBigInt ç¨ number åé¢éå n
åç¼è¡¨ç¤ºã
console.log(-3n / 2n); // -1n
宿¯ææ åçç®æ¯è¿ç®ç¬¦ï¼ä¾å¦ï¼å ãåãåä½è¿ç®ççãBigInt å number å¨ç®æ¯è¿ç®ä¸ä¸è½æ··ç¨ã
Math
对象æä¾äºæ åçæ°å¦å½æ°å常éã
Math.sin(3.5);
const circumference = 2 * Math.PI * r;
æä¸ç§å°å符串转æ¢ä¸º number çæ¹å¼ï¼
parseInt()
ï¼å°å符串解æä¸ºæ´æ°ãparseFloat()
ï¼å°å符串解æä¸ºæµ®ç¹æ°ãNumber()
彿°ï¼å°å符串å½ä½ number åé¢éè¿è¡è§£æï¼è¿æ¯æè®¸å¤ä¸åç number 表示ãä½ ä¹å¯ä»¥ä½¿ç¨ä¸å
+
ä½ä¸º Number()
çç®åã
number å¼è¿å
å« NaN
ï¼âNot a Numberâçç®åï¼å Infinity
ã许å¤âéæ³çæ°å¦âè¿ç®çç»ææ¯ NaN
ââä¾å¦ï¼è¯å¾è§£æéæ°å¼åç¬¦ä¸²ï¼æè
对è´å¼ä½¿ç¨ Math.log()
ãé¤ä»¥é¶çç»ææ¯ Infinity
ï¼æ£çæè´çï¼ã
NaN
ä¼ä¼ æãå¦æä½ å¨æ°å¦è¿ç®ä¸å°å®ä½ä¸ºæä½æ°ï¼ç»æå°ä¹ä¼æ¯ NaN
ãNaN
æ¯ JavaScript ä¸å¯ä¸åèªèº«ä¸ç¸ççå¼ï¼æ ¹æ® IEEE 754 è§èï¼ã
JavaScript ä¸çåç¬¦ä¸²æ¯ Unicode å符åºåãè¿å¯¹äºæ¾ç»å¤çè¿å½é åçå¼åè æ¥è¯´æ¯å欢è¿çæ¶æ¯ãæ´ç²¾ç¡®å°è¯´ï¼å®ä»¬æ¯ UTF-16 ç¼ç çã
console.log("Hello, world");
console.log("ä½ å¥½ï¼ä¸çï¼"); // å¨å符串åé¢éä¸å ä¹å¯ä»¥ä¹¦åææç Unicode å符
å¯ä»¥ç¨åå¼å·æåå¼å·ä¹¦åå符串ââJavaScript 没æå¯¹å符åå符串è¿è¡åºåãå¦æä½ æ³è¡¨ç¤ºå个å符ï¼å°±ä½¿ç¨å å«é£ä¸ªå个å符çå符串就è¡ã
console.log("Hello"[1] === "e"); // true
è¦å¾å°å符串çé¿åº¦ï¼ä»¥ç å
为åä½ï¼ï¼è®¿é®å符串ç length
屿§ã
å符串ææä½å符串å访é®å符串信æ¯çå®ç¨æ¹æ³ãå 为ææçåå§å¼è®¾è®¡ä¸ºä¸å¯åçï¼å æ¤è¿äºæ¹æ³é½æ¯è¿åæ°å符串ã
å符串éè½½äº +
è¿ç®ç¬¦ï¼å½æä½æ°ä¹ä¸æ¯å符串æ¶ï¼æ§è¡çæ¯åç¬¦ä¸²æ¼æ¥è䏿¯æ°åå æ³ãç¹æ®ç模æ¿åé¢éè¯æ³è½ç¨åµå
¥å¼è¡¨è¾¾å¼æ´ç®æ´å°ä¹¦åå符串ãå Python ç f-string æ C# çæå¼å符串ä¸åï¼æ¨¡æ¿åé¢é使ç¨åå¼å·ï¼ä¸æ¯åå¼å·ï¼ä¹ä¸æ¯åå¼å·ï¼ã
const age = 25;
console.log("I am " + age + " years old."); // åç¬¦ä¸²æ¼æ¥
console.log(`I am ${age} years old.`); // 模æ¿åé¢é
å
¶ä»ç±»å
JavaScript åºå null
ï¼è¡¨ç¤ºæ
æç空å¼ï¼åªè½ä½¿ç¨ null
å
³é®åï¼å undefined
ï¼è¡¨ç¤ºå¼ç缺失ï¼ãæå¤ç§å¾å° undefined
çæ¹å¼ã
return
è¯å¥ï¼return;
ï¼ä¼éå¼å°è¿å undefined
ãobj.iDontExist
ï¼ä¼è¿å undefined
ãlet x;
ï¼ä¼å°åééå¼å°åå§å为 undefined
ãJavaScript æå¸å°ç±»åï¼å¯è½çå¼ä¸º true
å false
ââä¸¤ä¸ªé½æ¯å
³é®åãå¼é½è½æ ¹æ®ä¸åçè§å转æ¢ä¸ºå¸å°ï¼
false
ã0
ã空å符串ï¼""
ï¼ãNaN
ãnull
å undefined
é½è½¬æ¢æ false
ãtrue
ãä½ å¯ä»¥ä½¿ç¨ Boolean()
彿°æ¾å¼æ§è¡è¿ä¸ªè½¬æ¢ï¼
Boolean(""); // false
Boolean(234); // true
ç¶èï¼å 乿²¡æå¿
è¦è¿æ ·åï¼å 为 JavaScript 卿æä½¿ç¨å¸å°å¼æ¶ä¼éé»å°æ§è¡è¿ä¸ªè½¬æ¢ï¼ä¾å¦å¨ if
è¯å¥ä¸ï¼åè§æ§å¶ç»æï¼ãé´äºè¿ä¸ªåå ï¼æä»¬ææ¶å讲âçå¼âåâåå¼âï¼å¨å¸å°ä¸ä¸æä¸ï¼è¡¨æåå«è½è½¬æ¢æ true
å false
çå¼ã
æ¯æå¸å°è¿ç®ï¼å¦ï¼&&
ï¼é»è¾ä¸ï¼ã||
ï¼é»è¾æï¼ã!
ï¼é»è¾éï¼ï¼åè§è¿ç®ç¬¦ã
symbol ç±»åé常ç¨äºå建å¯ä¸çæ è¯ç¬¦ãæ¯ä¸ªç¨ Symbol()
彿°å建ç symbol é½è½ç¡®ä¿æ¯å¯ä¸çãæ¤å¤ï¼è¿ææ³¨å symbolï¼æ¯å
±äº«å¸¸éï¼åå
ç½® symbolï¼ç±è¯è¨ä½ä¸ºç¹å®æä½çâåè®®âï¼ãä½ å¯ä»¥å¨ symbol åèä¸é
读æ´å¤ç¸å
³ä¿¡æ¯ã
å¨ JavaScript ä¸ï¼ä½¿ç¨ä¸ä¸ªå
³é®åä¹ä¸å£°æåéï¼let
ãconst
ãvar
ã
let
è½å£°æå级åéã声æçåéä»
å¨å
å´åéçåä¸å¯ç¨ã
let a;
let name = "Simon";
// myLetVariable å¨è¿*ä¸*å¯è§
for (let myLetVariable = 0; myLetVariable < 5; myLetVariable++) {
// myLetVariable ä»
å¨è¿å¯è§
}
// myLetVariable å¨è¿*ä¸*å¯è§
const
è½å£°æå¼æ°¸è¿é½ä¸è½æ¹åçåéãåéä»
å¨å£°æåéçåä¸å¯ç¨ã
const Pi = 3.14; // 声æåé Pi
console.log(Pi); // 3.14
ç¨ const
声æçåéä¸è½è¢«éæ°èµå¼ã
const Pi = 3.14;
Pi = 1; // 伿åºé误ï¼å ä¸ºä½ ä¸è½ä¿®æ¹å¸¸æ°åéã
const
声æåªé»æ¢éæ°èµå¼ââ妿åéæ¯å¯¹è±¡çè¯ï¼å®ä»¬ä¸ä¼é»æ¢ä¿®æ¹åéçå¼ï¼
const obj = {};
obj.a = 1; // 没æé误
console.log(obj); // { a: 1 }
var
声æçè¡ä¸ºæç¹è®©äººæåï¼ä¾å¦ï¼å®ä»¬ä¸æ¯å级ä½ç¨åçï¼ï¼å¨ç°ä»£ç JavaScript 代ç ä¸ä¸é¼å±ä½¿ç¨ var
ã
å¦æä½ å£°æäºä¸ä¸ªåéï¼ä½æ²¡æç»åéèµå¼ï¼é£ä¹å®ç弿¯ undefined
ãä½ å£°æ const
åéæ¶ä¸è½ä¸åå§åï¼å ä¸ºä½ å颿 论å¦ä½é½æ æ³ä¿®æ¹å®ã
ç¨ let
å const
声æçåéä»ç¶ä¼å æ®å®ä¹æå¨çæ´ä¸ªä½ç¨åï¼å¨å®é
ç声æè¡ä¹åçåºåç§°ä½ææ¶æ§æ»åºãå®ä¸åéé®è½æä¸äºæè¶£çãä¸ä¼å¨å
¶ä»è¯è¨ä¸åçç交äºã
function foo(x, condition) {
if (condition) {
console.log(x);
const x = 2;
console.log(x);
}
}
foo(1, true);
å¨å¤§å¤æ°å
¶ä»è¯è¨ä¸ï¼ä¸é¢ç代ç ä¼è¾åºâ1âåâ2âï¼å ä¸ºå¨ const x = 2
代ç è¡ä¹åï¼x
åºè¯¥ä»ç¶å¼ç¨ä¸å±ä½ç¨åçåæ° x
ãå¨ JavaScript ä¸ï¼å ä¸ºæ¯æ¡å£°æä¼å æ®æ´ä¸ªä½ç¨åï¼æä»¥å¨ç¬¬ä¸ä¸ª console.log
å¤ä¼æåºé误ï¼âCannot access 'x' before initializationâãæ³è¦äºè§£æ´å¤ä¿¡æ¯ï¼åè§ let
çåè页é¢ã
JavaScript æ¯å¨æç±»åçãç±»åï¼æ£å¦å¨åé¢ç« è䏿æè¿°çï¼ä»
ä¸å¼å
³èï¼è䏿¯ä¸åéå
³èã对äºç¨ let
声æçåéï¼ä½ æ»æ¯å¯ä»¥éè¿éæ°èµå¼ä¿®æ¹åéçç±»åã
JavaScript çæ°å¼è¿ç®ç¬¦å
æ¬ +
ã-
ã*
ã/
ã%
ï¼åä½ï¼å **
ï¼ææ°è¿ç®ï¼ãä½¿ç¨ =
èµå¼ãæ¯ä¸ªäºå
è¿ç®ç¬¦è¿æä¸ä¸ªå¤åèµå¼è¿ç®ç¬¦ï¼ä¾å¦ +=
å -=
ï¼ï¼å
¶æ©å±ä¸º x = x operator y
ã
ä½ å¯ä»¥åå«ä½¿ç¨ ++
å --
è¿è¡èªå¢åèªåãå®ä»¬å¯ä»¥ç¨ä½åç¼æåç¼è¿ç®ç¬¦ã
+
è¿ç®ç¬¦ä¹å¯ä»¥æ§è¡åç¬¦ä¸²æ¼æ¥ã
"ä½ å¥½" + "ä¸ç"; // "ä½ å¥½ä¸ç"
å¦æä½ å°å符串å numberï¼æå ¶ä»å¼ï¼ç¸å ï¼é½ä¼å å°å ¶è½¬æ¢ä¸ºå符串ãè¿å¯è½ä¼è®©ä½ ç¯éï¼
"3" + 4 + 5; // "345"
3 + 4 + "5"; // "75"
å°ç©ºå符串åæä¸ªå¼ç¸å ï¼æ¯ä¸ç§å°è¿ä¸ªå¼è½¬æ¢ä¸ºå符串çå®ç¨æ¹æ³ã
JavaScript ä¸çæ¯è¾ä½¿ç¨ <
ã>
ã<=
å >=
ï¼å®ä»¬è½å¤çåç¬¦ä¸²åæ°åã对äºç¸çï¼å¦ææ¥æ¶å°çæ¯ä¸åç±»åçæä½æ°ï¼åçå·è¿ç®ç¬¦ä¼æ§è¡ç±»å转æ¢ãå¦ä¸æ¹é¢ï¼ä¸çå·è¿ç®ç¬¦ä¸å°è¯ç±»å转æ¢ï¼é常æ´åéçã
123 == "123"; // true
1 == true; // true
123 === "123"; // false
1 === true; // false
åçå·åä¸çå·ä¹æå¯¹åºçä¸ç¸çççæ¬ï¼!=
å !==
ã
JavaScript 乿ä½è¿ç®ç¬¦åé»è¾è¿ç®ç¬¦ãå¼å¾æ³¨æçæ¯ï¼é»è¾è¿ç®ç¬¦ä¸ä» åªå¤çå¸å°å¼ââå®ä»¬å¤çå¼çâçåâã
const a = 0 && "Hello"; // 0ï¼å 为 0 æ¯âåå¼â
const b = "Hello" || "world"; // "Hello"ï¼å 为 "Hello" å "world" 齿¯âçå¼â
&&
å ||
è¿ç®ç¬¦ä½¿ç¨çè·¯é»è¾ï¼è¿æå³çå®ä»¬æ¯å¦æ§è¡ç¬¬äºä¸ªæä½æ°åå³äºç¬¬ä¸ä¸ªæä½æ°ãè¿å¯¹äºè®¿é®å¯¹è±¡ç屿§ä¹åæ£æ¥å
¶æ¯å¦æ¯ null å¯¹è±¡å¾æç¨ï¼
const name = o && o.getName();
æè ç¨äºç¼åå¼ï¼å½å弿 ææ¶ï¼ï¼
const name = cachedName || (cachedName = getName());
æ³è¦äºè§£å®æ´çè¿ç®ç¬¦å表ï¼åè§æå页颿è åèç« èãä½ å¯è½å¯¹è¿ç®ç¬¦ä¼å 级ç¹å«æå ´è¶£ã
è¯æ³JavaScript è¯æ³å C å®¶æé常ç¸ä¼¼ãæå ç¹å¼å¾æåï¼
//
æ /* */
ï¼ç¶è许å¤å
¶ä»èæ¬è¯è¨ï¼å¦ PerlãPython å Bashï¼ä½¿ç¨ #
ãè¦æ·±å ¥å¦ä¹ JavaScript è¯æ³ï¼åè§è¯æ³è¯æ³çåè页é¢ã
æ§å¶ç»æJavaScript æä¸ç»å C å®¶æä¸çå
¶ä»è¯è¨ç¸ä¼¼çæ§å¶ç»æãæ¡ä»¶è¯å¥ä½¿ç¨ if
å else
ï¼ä½ å¯ä»¥åæ¶ä½¿ç¨ï¼
let name = "kittens";
if (name === "puppies") {
name += " woof";
} else if (name === "kittens") {
name += " meow";
} else {
name += "!";
}
name === "kittens meow";
JavaScript 没æ elif
ï¼else if
å®é
ä¸åªæ¯ç±å个 if
è¯å¥ææç else
忝ã
JavaScript æ while
循ç¯å do...while
循ç¯ãåè
ç¨äºåºç¡ç循ç¯ï¼åè
ç¨äºä½ å¸æç¡®ä¿å¾ªç¯ä½è³å°æ§è¡ä¸éç循ç¯ï¼
while (true) {
// æ é循ç¯ï¼
}
let input;
do {
input = get_input();
} while (inputIsNotValid(input));
JavaScript ç for
循ç¯å C 以å Java ä¸ç䏿 ·ï¼å®è½å¨åè¡ä¸ä¸ºå¾ªç¯æä¾æ§å¶ä¿¡æ¯ã
for (let i = 0; i < 5; i++) {
// å°æ§è¡ 5 次
}
JavaScript ä¹å
å«å
¶ä»ä¸¤ä¸ªèå循ç¯ï¼for...of
ï¼å
¶å¯¹å¯è¿ä»£å¯¹è±¡è¿è¡è¿ä»£ï¼ç¹å«æ¯æ°ç»ï¼å for...in
ï¼å
¶è®¿é®å¯¹è±¡çå
¨é¨å¯æä¸¾å±æ§ï¼ã
for (const value of array) {
// 使ç¨å¼
}
for (const property in object) {
// 使ç¨å¯¹è±¡å±æ§
}
switch
è¯å¥ç¨äºåºäºç¸çæ£æ¥çå¤ä¸ªåæ¯ã
switch (action) {
case "draw":
drawIt();
break;
case "eat":
eatIt();
break;
default:
doNothing();
}
ä¸ C 类似ï¼case ä»å¥å¨æ¦å¿µä¸å label 䏿 ·ï¼æä»¥å¦æä½ 䏿·»å break
è¯å¥ï¼æ§è¡ä¼âè½å°âä¸ä¸çº§ãç¶èï¼å®ä»¬å®é
ä¸ä¸æ¯è·³è½¬è¡¨ââcase
ä»å¥å¯ä»¥æ¯ä»»æç表达å¼ï¼ä¸å±éäºåç¬¦ä¸²åæ°ååé¢éï¼ä»¥åä»å¥æ¯ä¸ä¸ªæ¥çä¸ä¸ªå°æ§è¡ï¼ç´å°æä¸ªä»å¥çå¼ä¸å¾
å¹é
çå¼ç¸çã两è
çæ¯è¾éç¨çæ¯ ===
è¿ç®ç¬¦ã
ä¸ä¸äºè¯è¨ï¼å¦ Rustï¼ä¸ä¸æ ·ï¼JavaScript ä¸çæ§å¶æµç»ææ¯è¯å¥ï¼è¿æå³çä½ ä¸è½å°å®ä»¬èµå¼ç»åéï¼å°±å const a = if (x) { 1 } else { 2 }
ã
ä½¿ç¨ try...catch
è¯å¥å¤ç JavaScript é误ã
try {
buildMySite("./website");
} catch (e) {
console.error("ç½ç«æå»ºå¤±è´¥ï¼", e);
}
ä½¿ç¨ throw
è¯å¥æåºé误ã许å¤å
ç½®çè¿ç®ä¹å¯ä»¥æåºé误ã
function buildMySite(siteDirectory) {
if (!pathExists(siteDirectory)) {
throw new Error("ç«ç¹ç®å½ä¸åå¨");
}
}
ä¸è¬æ¥è¯´ï¼ä½ æ æ³ç¡®å®åææè·çé误çç±»åï¼å ä¸ºä» throw
è¯å¥å¯ä»¥æåºä»»ä½å¼ãç¶èï¼ä½ é常å¯ä»¥åè®¾å®æ¯ Error
å®ä¾ï¼æ£å¦ä¸é¢ç示ä¾é£æ ·ãæä¸äºå
ç½®ç Error
åç±»ï¼å¦ TypeError
å RangeError
ï¼ï¼ä½ å¯ä»¥ç¨å®ä»¬æä¾é误ç¸å
³çé¢å¤è¯ä¹ãå¨ JavaScript 䏿²¡ææ¡ä»¶æè·ââå¦æä½ åªæ³å¤çä¸ç§é误类åï¼ä½ éè¦æè·ææé误ï¼ä½¿ç¨ instanceof
è¯å«é误类åï¼ç¶åéæ°æåºå
¶ä»çé误类åã
try {
buildMySite("./website");
} catch (e) {
if (e instanceof RangeError) {
console.error("çèµ·æ¥åæ°è¶
åºäºèå´ï¼", e);
console.log("éè¯...");
buildMySite("./website");
} else {
// ä¸ç¥éå¦ä½å¤çå
¶ä»çé误类åï¼æåºå®ä»¬è¿æ ·è°ç¨æ é ä¸ç代ç å¯è½æè·ä»¥åå¤çå®
throw e;
}
}
妿é误没æè¢«è°ç¨æ ä¸çä»»ä½ try...catch
æè·ï¼é£ä¹ç¨åºå°ä¼éåºã
æ³è¦äºè§£å®æ´çæ§å¶æµè¯å¥å表ï¼åè§åèç« èã
对象å¯ä»¥å° JavaScript 对象å½ä½æ¯é®å¼å¯¹çéåãå æ¤ï¼å®ä»¬ç±»ä¼¼äºï¼
JavaScript å¯¹è±¡æ¯æ£åãä¸éæç±»åè¯è¨ä¸ç对象ä¸åï¼JavaScript ä¸ç对象没æåºå®çå½¢ç¶ââå¯ä»¥éæ¶æ·»å ãå é¤ãéæ°æåºãä¿®æ¹æå¨ææ¥è¯¢å±æ§ãå¯¹è±¡é®æ»æ¯å符串æ symbolââå³ä¾¿æ¯éå¸¸è¢«è®¤ä¸ºæ¯æ´æ°çæ°ç»ç´¢å¼ï¼ä½å¨åºå±å®é 䏿¯å符串ã
é常使ç¨åé¢éè¯æ³å建对象ï¼
const obj = {
name: "è¡ç½å",
for: "麦å
æ¯",
details: {
color: "æ©è²",
size: 12,
},
};
å¯ä»¥ä½¿ç¨ç¹å·ï¼.
ï¼ææ¹æ¬å·ï¼[]
ï¼è®¿é®å¯¹è±¡å±æ§ãå½ä½¿ç¨ç¹è®°å·æ¶ï¼é®å¿
é¡»æ¯åæ³çæ è¯ç¬¦ãå¦ä¸æ¹é¢ï¼æ¹æ¬å·å
许使ç¨å¨æçé®ç´¢å¼å¯¹è±¡ã
// ç¹è®°å·
obj.name = "西è";
const name = obj.name;
// æ¬å·è®°å·
obj["name"] = "西è";
const name = obj["name"];
// å¯ä»¥ä½¿ç¨åéå®ä¹é®
const userName = prompt("ä½ ç鮿¯ä»ä¹ï¼");
obj[userName] = prompt("é®ç弿¯ä»ä¹ï¼");
å¯ä»¥é¾å¼ä½¿ç¨å±æ§è®¿é®ï¼
obj.details.color; // æ©è²
obj["details"]["size"]; // 12
å¯¹è±¡æ»æ¯å¼ç¨ï¼æä»¥é¤éæ¾å¼å°å¤å¶å¯¹è±¡ï¼å¦åæ¹å对象å°ä¼å¯¹å¤é¨å¯è§ã
const obj = {};
function doSomething(o) {
o.x = 1;
}
doSomething(obj);
console.log(obj.x); // 1
è¿ä¹æå³çåå«å建ç两个对象永ä¸å¯è½ç¸çï¼!==
ï¼ï¼å 为å®ä»¬æ¯ä¸åçå¼ç¨ãå¦æä½ æåä¸ä¸ªå¯¹è±¡ç两个å¼ç¨ï¼ä¿®æ¹å
¶ä¸ä¸ä¸ªå°è½éè¿å¦ä¸ä¸ªè§å¯å°ã
const me = {};
const stillMe = me;
me.x = 1;
console.log(stillMe.x); // 1
æ³è¦äºè§£å
³äºå¯¹è±¡åååçæ´å¤ç¥è¯ï¼åè§ Object
åèé¡µãæ³è¦äºè§£å
³äºå¯¹è±¡åå§åå¨è¯æ³çæ´å¤ä¿¡æ¯ï¼åè§å
¶åè页ã
æ¬æå¿½ç¥äºæå ³å¯¹è±¡åååç»§æ¿çå ¨é¨ç»èï¼å ä¸ºä½ é常使ç¨ç±»å®ç°ç»§æ¿ï¼ä¸éè¦æ¥è§¦å°åºå±æºå¶ï¼ä½ å¯è½å¬è¯´åºå±æºå¶å¾æ·±å¥¥ï¼ãæ³è¦å¦ä¹ åºå±æºå¶ï¼åè§ç»§æ¿ä¸ååé¾ã
æ°ç»JavaScript ä¸çæ°ç»å®é
䏿¯ä¸ç§ç¹æ®ç对象类åãå®ä»¬çç¨æ³å常è§ç对象é常åï¼å¤©çåªè½ä½¿ç¨ []
è¯æ³è®¿é®æ°å屿§ï¼ï¼ä½æ¯å®ä»¬æä¸ä¸ªç§°ä½ length
çç¥å¥å±æ§ãè¿ä¸ªå±æ§ç弿»æ¯æ¯æ°ç»ä¸æé«çç´¢å¼å¤§ 1ã
éå¸¸ç¨æ°ç»åé¢éå建æ°ç»ï¼
const a = ["ç", "ç«", "æ¯é¸¡"];
a.length; // 3
JavaScript æ°ç»ä»ç¶æ¯å¯¹è±¡ââä½ å¯ä»¥ç»å®ä»¬èµä»»æç屿§ï¼å
æ¬ä»»æçæ°åç´¢å¼ãå¯ä¸çâéæ³âå°±æ¯å¨ä½ 设置ç¹å®çç´¢å¼æ¶ä¼èªå¨æ´æ° length
ã
const a = ["ç", "ç«", "æ¯é¸¡"];
a[100] = "çç¸";
console.log(a.length); // 101
console.log(a); // ['ç', 'ç«', 'æ¯é¸¡', empty à 97, 'çç¸']
ä¸é¢çæ°ç»ç§°ä½ç¨çæ°ç»ï¼å 为ä¸é´æç©ºçæ§½ï¼è¿ä¼å¯¼è´å¼æå°æ°ç»è´ä¼å为æ£å表ãç¡®ä¿æ°ç»æ¯ç´§å¯æåçï¼
è¶çç´¢å¼ä¸ä¼æåºå¼å¸¸ãå¦æä½ æ¥è¯¢çæ¯ä¸å卿°ç»ç´¢å¼ï¼ä½ å¾å°çè¿å弿¯ undefined
ï¼
const a = ["ç", "ç«", "æ¯é¸¡"];
console.log(typeof a[90]); // undefined
æ°ç»å ç´ çç±»åæ¯ä»»æçï¼æ°ç»å¤§å°å¯ä»¥ä»»æçå大æåå°ã
const arr = [1, "foo", true];
arr.push({});
// arr = [1, "foo", true, {}]
å¯ä»¥ç¨ for
循ç¯è¿ä»£æ°ç»ï¼æ£å¦ä½ å¨å
¶ä»ç±» C è¯è¨ä¸åç飿 ·ï¼
for (let i = 0; i < a.length; i++) {
// ä½¿ç¨ a[i]
}
æè
ï¼å 为æ°ç»æ¯å¯è¿ä»£å¯¹è±¡ï¼ä½ å¯ä»¥ä½¿ç¨ for...of
循ç¯ï¼å®å C++/Java ç for (int x : arr)
è¯æ³æ¯åä¹çï¼
for (const currentValue of a) {
// ä½¿ç¨ currentValue
}
æ°ç»æå¾å¤æ°ç»æ¹æ³ãè¿äºæ¹æ³ä¸å¾å¤é½ä¼è¿ä»£æ°ç»ââä¾å¦ï¼map()
ä¼ä¸ºæ¯ä¸ä¸ªæ°ç»å
ç´ æ§è¡åè°ï¼ç¶åè¿åä¸ä¸ªæ°æ°ç»ï¼
const babies = ["ç", "ç«", "æ¯é¸¡"].map((name) => `${name}å®å®`);
// babies = ['çå®å®', 'ç«å®å®', 'æ¯é¸¡å®å®']
彿°
é¤äºå¯¹è±¡ä¹å¤ï¼å½æ°ä¹æ¯çè§£ JavaScript çæ ¸å¿ç»ä»¶ãæåºç¡ç彿°å£°æçèµ·æ¥åè¿æ ·ï¼
function add(x, y) {
const total = x + y;
return total;
}
JavaScript 彿°å¯ä»¥æ¥æ¶ 0 个æå¤ä¸ªåæ°ã彿°ä½å¯ä»¥å
å«ä»»ææ°éçè¯å¥ï¼ä¹å¯ä»¥å£°æå½æ°å±é¨åéãreturn
è¯å¥å¯ä»¥å¨ä»»ä½æ¶åè¿åä¸ä¸ªå¼ï¼ç¨äºç»æ¢å½æ°ãå¦ææ²¡æä½¿ç¨ return è¯å¥ï¼æ return çæ¯ç©ºå¼ï¼ï¼JavaScript ä¼è¿å undefined
ã
彿°è¢«è°ç¨æ¶çåæ°å¯ä»¥æ¯å½æ°è§å®çåæ°å°æå¤ã妿è°ç¨å½æ°æ¶ï¼æ²¡æä¼ é宿å¾
çåæ°ï¼é£ä¹è¿äºåæ°ä¼è®¾ç½®ä¸º undefined
ãå¦æä¼ éçåæ°æ¯å½æ°æå¾
çå¤ï¼å½æ°ä¼å¿½ç¥é¢å¤çåæ°ã
add(); // NaN
// çä»·äº add(undefined, undefined)
add(2, 3, 4); // 5
// 使ç¨åä¸¤ä¸ªåæ°ï¼å¿½ç¥åæ° 4
è¿æä¸äºå
¶ä»å¯ç¨çåæ°è¯æ³ãä¾å¦ï¼å©ä½åæ°è¯æ³è½å°ä¼ éç»å½æ°çé¢å¤åæ°é½æ¶éå°æ°ç»ä¸ï¼å Python ç *args
类似ï¼å 为 JS å¨è¯è¨å±é¢æ²¡æå
·ååæ°ï¼æä»¥æ²¡æ **kwargs
ï¼ã
function avg(...args) {
let sum = 0;
for (const item of args) {
sum += item;
}
return sum / args.length;
}
avg(2, 3, 4, 5); // 3.5
å¨ä¸é¢ç代ç ä¸ï¼åé args
æ¥æä¼ éç»å½æ°çææå¼ã
å©ä½åæ°ä¼åå¨ä½äºå®ç声æä¹åçææåæ°ï¼è䏿¯ä¹åãæ¢å¥è¯è¯´ï¼function avg(firstValue, ...args)
ä¼å°ä¼ éç»å½æ°ç第ä¸ä¸ªå¼åå¨å¨ firstValue
åéä¸ï¼å©ä½çåæ°åå¨å¨ args
ä¸ã
妿æä¸ä¸ªæ¥æ¶ä¸ç»åæ°ç彿°å¹¶ä¸ä½ å·²ç»å°è¿äºåæ°åå¨å¨æ°ç»ä¸ï¼ä½ å¯ä»¥å¨å½æ°è°ç¨ä¸ä½¿ç¨å±å¼è¯æ³å°æ°ç»å±å¼ä¸ºä¸ç»å
ç´ ãä¾å¦ï¼avg(...numbers)
ã
æä»¬æå°è¿ JavaScript 没æå ·ååæ°ãç¶è使ç¨å¯¹è±¡è§£æå®ç°å ·ååæ°æ¯å¯è½çï¼å¯¹è±¡è§£æè½æ¹ä¾¿å°å®ç°æå åè§£å ã
// 注æ { } æ¬å·ï¼è¿æ¯å¨è§£æä¸ä¸ªå¯¹è±¡
function area({ width, height }) {
return width * height;
}
// è¿éç { } æ¬å·å建äºä¸ä¸ªæ°å¯¹è±¡
console.log(area({ width: 2, height: 3 }));
é»è®¤åæ°è¯æ³å
许被忽ç¥çåæ°ï¼æå¼ä¸º undefined
çåæ°ï¼æé»è®¤å¼ã
function avg(firstValue, secondValue, thirdValue = 0) {
return (firstValue + secondValue + thirdValue) / 3;
}
avg(1, 2); // 1ï¼è䏿¯ NaN
å¿å彿°
JavaScript è½è®©ä½ å建å¿å彿°ââä¹å°±æ¯æ²¡æååç彿°ãå¨å®è·µä¸ï¼å¿å彿°ä¸è¬ç¨ä½å ¶ä»å½æ°çåæ°ãç«å³è¢«èµå¼ç»ç¨äºæ¿æ´»å½æ°çåéãæè ä½ä¸ºå¦ä¸ä¸ªå½æ°çè¿åå¼ã
// 注æï¼åæ¬å·å颿²¡æå½æ°å
const avg = function (...args) {
let sum = 0;
for (const item of args) {
sum += item;
}
return sum / args.length;
};
è¿æ ·å°±è½ç¨åæ°è°ç¨ avg()
æ¿æ´»å¿å彿°ââä¹å°±æ¯è¯´ï¼å®ä»è¯ä¹ä¸åä½¿ç¨ function avg() {}
声æè¯æ³å£°æå½æ°æ¯çä»·çã
乿å¦ä¸ç§å®ä¹å¿å彿°çæ¹å¼ââ使ç¨ç®å¤´å½æ°è¡¨è¾¾å¼ã
// 注æï¼åæ¬å·å颿²¡æå½æ°å
const avg = (...args) => {
let sum = 0;
for (const item of args) {
sum += item;
}
return sum / args.length;
};
// ç®åå°è¿åè¡¨è¾¾å¼æ¶å¯ä»¥å¿½ç¥ `return`
const sum = (a, b, c) => a + b + c;
ç®å¤´å½æ°ä»è¯ä¹ä¸å彿°è¡¨è¾¾å¼ä¸çä»·ââæ³è¦äºè§£æ´å¤ä¿¡æ¯ï¼åè§å®çåè页é¢ã
æå¦ä¸ç§ææä½¿ç¨å¿å彿°çæ¹å¼ï¼å¯ä»¥å¨å个表达å¼ä¸åæ¶å£°æåæ¿æ´»å¿å彿°ï¼è¿ç§°ä½ç«å³è°ç¨å½æ°è¡¨è¾¾å¼ï¼IIFEï¼ï¼
(function () {
// â¦
})();
æ³è¦äºè§£ IIFE çç¨æ³ï¼ä½ å¯ä»¥é 读ç¨éå æ¨¡æç§ææ¹æ³ã
éå½å½æ°JavaScript è½éå½å°è°ç¨å½æ°ãè¿å¯¹äºå¤çæ ç»æå°¤å ¶æç¨ï¼ä¾å¦æµè§å¨ DOM ä¸çæ ç»æã
function countChars(elm) {
if (elm.nodeType === 3) {
// TEXT_NODE
return elm.nodeValue.length;
}
let count = 0;
for (let i = 0, child; (child = elm.childNodes[i]); i++) {
count += countChars(child);
}
return count;
}
ä¹å¯ä»¥å¯¹å½æ°è¡¨è¾¾å¼å½åï¼è¿æ ·å°±è½å¯¹å ¶è¿è¡éå½ã
const charsInBody = (function counter(elm) {
if (elm.nodeType === 3) {
// TEXT_NODE
return elm.nodeValue.length;
}
let count = 0;
for (let i = 0, child; (child = elm.childNodes[i]); i++) {
count += counter(child);
}
return count;
})(document.body);
ä¸é¢ç示ä¾ä¸ç»å½æ°è¡¨è¾¾å¼æä¾çååä» å¨å½æ°çèªæä½ç¨åä¸å¯ç¨ãè¿è½è®©å¼ææ§è¡æ´å¤çä¼åå¹¶çææ´å¯è¯»ç代ç ãååä¹è½å¨è°è¯å¨åä¸äºæ è¿½è¸ªä¸æ¾ç¤ºï¼è½èçè°è¯æ¶é´ã
å¦æä½ ä¹ æ¯å½æ°å¼ç¼ç¨ï¼æ³¨æ JavaScript ä¸éå½çæ§è½å½±åãè½ç¶è¯è¨è§èè§å®äºå°¾éå½ä¼åï¼ä½ç±äºæ¢å¤æ 追踪åè°è¯çå°é¾ï¼åªæ JavaScriptCoreï¼ç¨äº Safariï¼å®ç°äºå®ãå¯¹äºæ·±éå½ï¼èè使ç¨è¿ä»£ä½ä¸ºæ¿ä»£ï¼é¿å æ æº¢åºã
彿°æ¯å¤´ç对象JavaScript 彿°æ¯å¤´ç对象ãè¿æå³çå®ä»¬å¯ä»¥è¢«èµå¼ç»åéãä½ä¸ºåæ°è¢«ä¼ éç»å ¶ä»å½æ°ãä½ä¸ºå ¶ä»å½æ°çè¿åå¼ãæ¤å¤ï¼JavaScript æ¯æå¼ç®±å³ç¨ä¸éè¦æ¾å¼æè·çéå ï¼è®©ä½ è½æ¹ä¾¿å°åºç¨å½æ°å¼ç¼ç¨é£æ ¼ã
// è¿å彿°ç彿°
const add = (x) => (y) => x + y;
// æ¥æ¶å½æ°ç彿°
const babies = ["ç", "ç«", "æ¯é¸¡"].map((name) => `${name}å®å®`);
注æï¼JavaScript 彿°èªèº«æ¯å¯¹è±¡ââå JavaScript ä¸çå ¶ä»å¼ä¸æ ·ââä½ å¯ä»¥æ·»å æä¿®æ¹å½æ°ä¸ç屿§ï¼å°±ååé¢å¨å¯¹è±¡ç« èä¸çå°ç飿 ·ã
å é¨å½æ°å¯ä»¥å¨å ¶ä»å½æ°å é¨å£°æ JavaScript 彿°ãJavaScript ä¸åµå¥å½æ°çä¸ä¸ªéè¦çç»èå°±æ¯å®ä»¬è½è®¿é®ä½äºå ¶ç¶å½æ°çä½ç¨åä¸çåéï¼
function parentFunc() {
const a = 1;
function nestedFunc() {
const b = 4; // parentFunc ä¸è½ä½¿ç¨è¿ä¸ªåé
return a + b;
}
return nestedFunc(); // 5
}
è¿ä¸ºä¹¦åæ´å ·ç»´æ¤æ§çä»£ç æä¾äºå¤§éçå®ç¨æ¹æ³ãå¦æè¢«è°ç¨ç彿°ä¾èµçä¸ä¸¤ä¸ªå ¶ä»å½æ°å¨ä»£ç çå ¶ä»å°æ¹æ²¡æä»»ä½ç¨å¤ï¼ä½ å¯ä»¥å°è¿äºå®ç¨å½æ°åµå¥å¨è¢«è°ç¨å½æ°ä¸ãè¿æ ·å¯ä»¥åå°å ¨å±ä½ç¨åä¸ç彿°æ°éã
è¿ä¹æ¯å¯¹å ¨å±åé诱æçä¸ä¸ªæåå驳ãå¨ä¹¦åå¤æä»£ç æ¶ï¼é叏忬¢ç¨å ¨å±åéå¨å¤ä¸ªå½æ°ä¹é´å ±äº«å¼ï¼èè¿ä¼å¯¼è´ä»£ç åå¾é¾ä»¥ç»´æ¤ãåµå¥å½æ°å¯ä»¥å ±äº«å ¶ç¶å½æ°ä¸çåéï¼è¿æ ·ä½ å°±è½ä½¿ç¨é£ä¸ªæºå¶å°å½æ°è¦åèµ·æ¥ï¼ä»¥åä¸ä¼æ±¡æå ¨å±å½å空é´ã
ç±»JavaScript æä¾çç±»è¯æ³å Java è¯è¨çé常类似ã
class Person {
constructor(name) {
this.name = name;
}
sayHello() {
return `ä½ å¥½ï¼ææ¯${this.name}ï¼`;
}
}
const p = new Person("ç丽äº");
console.log(p.sayHello());
JavaScript ç±»åªæ¯å¿
é¡»ä½¿ç¨ new
è¿ç®ç¬¦åå§åç彿°ãæ¯æ¬¡å®ä¾åç±»æ¶ï¼å®ä¼è¿åä¸ä¸ªå
å«ç±»ææå®çæ¹æ³å屿§ç对象ã类并ä¸å¼ºå¶æ§è¡ä»£ç ç»ç»ââä¾å¦ï¼ä½ å¯ä»¥æè¿åç±»ç彿°ï¼ä½ å¯ä»¥æ¯ä¸ªæä»¶æå¤ä¸ªç±»ãä¸é¢æ¯ä¸ä¸ªéæå建类çä¾åï¼å°±æ¯ä¸ä¸ªä»ç®å¤´å½æ°è¿åç表达å¼ãè¿ä¸ªæ¨¡å¼ç§°ä½æ··å
¥ã
const withAuthentication = (cls) =>
class extends cls {
authenticate() {
// â¦
}
};
class Admin extends withAuthentication(Person) {
// â¦
}
å¨å颿·»å static
å建éæå±æ§ãå¨å颿·»å äºå· #
ï¼ä¸æ¯ private
ï¼åå»ºç§æå±æ§ãäºå·æ¯å±æ§åä¸å¯ç¼ºå°çä¸é¨åãï¼æ #
å½ä½ Python ä¸ç _
ãï¼ä¸å¤§å¤æ°å
¶ä»è¯è¨ä¸åï¼ç»å¯¹æ²¡æåæ³å¨ç±»ä½å¤è¯»åç§æå±æ§ââçè³å¨æ´¾çç±»ä¸ä¹ä¸è¡ã
æ³è¦äºè§£åç§ç±»ç¹æ§çè¯¦ç»æåï¼ä½ å¯ä»¥é 读æå页ã
弿¥ç¼ç¨JavaScript æ¬è´¨ä¸æ¯å线ç¨çãæ²¡æå¹¶è¡ï¼åªæå¹¶åã弿¥ç¼ç¨ç±äºä»¶å¾ªç¯é©±å¨ï¼äºä»¶å¾ªç¯å许ä¸ç»ä»»å¡å ¥é并轮询任å¡ç´è³å®æã
å¨ JavaScript ä¸ï¼æä¸ç§æ¯ç¨ç书å弿¥ä»£ç çæ¹å¼ï¼
setTimeout()
ï¼Promise
çasync
/await
ï¼æ¯ Promise çè¯æ³ç³ä¾å¦ï¼JavaScript ä¸è¯»åæä»¶çæä½å¯è½åä¸é¢è¿æ ·ï¼
// åºäºåè°ç
fs.readFile(filename, (err, content) => {
// å¨è¯»åæä»¶æ¶æ¿æ´»åè°ï¼å¯è½å¾è¿ä¸ä¼æè¯»åæä»¶
if (err) {
throw err;
}
console.log(content);
});
// è¿éç代ç ä¼å¨çå¾
读åæä»¶çæé´è¢«æ§è¡
// åºäº Promise ç
fs.readFile(filename)
.then((content) => {
// 读åæä»¶æ¶åççäº
console.log(content);
})
.catch((err) => {
throw err;
});
// è¿éç代ç ä¼å¨çå¾
读åæä»¶çæé´è¢«æ§è¡
// Async/await
async function readFile(filename) {
const content = await fs.readFile(filename);
console.log(content);
}
æ ¸å¿è¯è¨å¹¶æ²¡ææå®ä»»ä½ç弿¥ç¼ç¨ç¹æ§ï¼ä½å¨ä¸å¤é¨ç¯å¢äº¤äºæ¶ï¼è¿ä¸ªç¹æ§é常éè¦ââä»è¯¢é®ç¨æ·æéï¼è·åæ°æ®ï¼å°è¯»åæä»¶ãä¿ææ½å¨å°é¿æ¶é´è¿è¡çæä½å¼æ¥è½ç¡®ä¿è¿ä¸ªæä½çå¾ æé´å ¶ä»è¿ç¨ä»ç¶è½è¿è¡ââä¾å¦ï¼å¨çå¾ ç¨æ·ç¹å»æé®æäºæéæé´ï¼æµè§å¨ä¸ä¼å»ç»ã
å¦æä½ æä¸ä¸ªå¼æ¥çå¼ï¼åæ¥å°å¾å°è¿ä¸ªå¼æ¯ä¸å¯è½çãä¾å¦ï¼å¦æä½ æä¸ä¸ª promiseï¼ä½ åªè½éè¿ then()
æ¹æ³è®¿é®æç»çç»æãåæ ·å°ï¼await
åªè½è¢«ç¨äºå¼æ¥ä¸ä¸æä¸ï¼å¼æ¥ä¸ä¸æé常æ¯å¼æ¥å½æ°ææ¨¡åãpromise æ°¸ä¸é»å¡ââåªæ¯ä¾èµäº promise çç»æçé»è¾ä¼è¢«å»¶è¿ï¼å¨æ¤æé´ï¼å
¶ä½é¨åç»§ç»æ§è¡ãå¦æä½ æ¯å½æ°å¼ç¼ç¨è
ï¼ä½ å¯ä»¥å° promise å½ä½ååï¼å¯ä»¥ç¨ then()
æ å° promiseï¼ç¶èï¼promise 䏿¯ä¸¥æ ¼æä¹ä¸çååï¼å®ä»¬ä¼èªå¨å±å¹³ï¼ä¾å¦ï¼ä½ ä¸è½æ Promise<Promise<T>>
ï¼ã
å®é ä¸ï¼åçº¿ç¨æ¨¡å让 Node.js æä¸ºæå¡å¨ç«¯ç¼ç¨ççé¨éæ©ï¼å 为å®éé»å¡ç IOï¼ä½¿å¾å¤ç大éçæ°æ®åºææä»¶ç³»ç»è¯·æ±é叏髿ãç¶èï¼çº¯ JavaScript ç CPU å¯éåï¼è®¡ç®å¯éåï¼ä»»å¡ä»ä¼é»å¡ä¸»çº¿ç¨ã为äºå®ç°çæ£çå¹¶è¡ï¼ä½ éè¦ä½¿ç¨ workerã
æ³è¦å¦ä¹ æ´å¤æå ³å¼æ¥ç¼ç¨çç¥è¯ï¼ä½ å¯ä»¥é è¯»ä½¿ç¨ Promiseï¼æè å ³æ³¨å¼æ¥ JavaScript æç¨ã
模åJavaScript 乿å®äºä¸ä¸ªå¤§å¤æ°è¿è¡æ¶é½æ¯æç模åç³»ç»ãä¸ä¸ªæ¨¡åé常æ¯ä¸ä¸ªæä»¶ï¼ç±æä»¶çæä»¶è·¯å¾æ URL æ è¯ãä½ å¯ä»¥ä½¿ç¨ import
å export
è¯å¥å¨æ¨¡åé´äº¤æ¢æ°æ®ï¼
import { foo } from "./foo.js";
// æªå¯¼åºçåéæ¯æ¨¡åçæ¬å°åé
const b = 2;
export const a = 1;
ä¸å HaskellãPythonãJava çï¼JavaScript 模åè§£æå®å ¨ç±å®¿ä¸»å®ä¹ââé常æ¯åºäº URL æ æä»¶è·¯å¾ï¼å æ¤ç¸å¯¹æä»¶è·¯å¾âå°±è½ææâï¼å¹¶ä¸ç¸å¯¹çæ¯å½å模åçè·¯å¾ï¼è䏿¯æä¸ªé¡¹ç®çæ ¹è·¯å¾ã
ç¶èï¼JavaScript è¯è¨æ²¡ææä¾æ åçåºæ¨¡åââææçæ ¸å¿åè½ç±å
¨å±åéï¼ä¾å¦ï¼Math
å Intl
ï¼é©±å¨ãç±äº JavaScript é¿æç¼ºä¹æ¨¡åç³»ç»ï¼å¯¼è´éæ©ä½¿ç¨æ¨¡åç³»ç»éè¦æ¹åä¸äºè¿è¡æ¶è®¾ç½®ã
ä¸åçè¿è¡æ¶å¯è½ä½¿ç¨ä¸åçæ¨¡åç³»ç»ãä¾å¦ï¼Node.js ä½¿ç¨ npm å 管çå¨ä»¥åä¸»è¦æ¯åºäºæä»¶ç³»ç»çï¼ç¶è Deno åæµè§å¨æ¯å®å ¨åºäº URL çï¼å¯ä»¥ä» HTTP URL è§£ææ¨¡åã
æ³è¦äºè§£æ´å¤ä¿¡æ¯ï¼åè§æ¨¡åæå页ã
è¯è¨åè¿è¡æ¶å¨æ¬æä¸ï¼æä»¬ä¸ææåæä¸ªç¹æ§æ¯è¯è¨çº§å«çï¼èå ¶ä»ç忝è¿è¡æ¶çº§å«çã
JavaScript æ¯éç¨åèæ¬è¯è¨ãæ ¸å¿è¯è¨è§è䏿³¨äºçº¯è®¡ç®é»è¾ãå®ä¸å¤çä»»ä½çè¾å
¥/è¾åºââå®é
ä¸ï¼æ²¡æé¢å¤çè¿è¡æ¶çº§å«ç APIï¼ç¹å«æ¯ console.log()
ï¼ï¼JavaScript ç¨åºçè¡ä¸ºæ¯å®å
¨ä¸å¯é¢æµçã
è¿è¡æ¶æè å®¿ä¸»å°æ°æ®åé¦ç» JavaScript 弿ï¼è§£éå¨ï¼ãæä¾é¢å¤çå ¨å±å±æ§ãä¸ºå¼ææä¾é©åä¸å¤é¨ä¸ç交äºã模åè§£æãè¯»åæ°æ®ãæå°æ¶æ¯ãåéç½ç»è¯·æ±ç齿¯è¿è¡æ¶çº§å«çæä½ãèªè¯ç以æ¥ï¼JavaScript 已被åç§ç¯å¢æéç¨ãä¾å¦ï¼æµè§å¨ï¼å ¶æä¾è¯¸å¦ DOM è¿æ ·ç APIï¼ãNode.jsï¼å ¶æä¾è¯¸å¦æä»¶ç³»ç»è®¿é®è¿æ ·ç APIï¼çãJavaScript å·²ç»æåæ´åå° Webï¼å ¶ä¸º JavaScript ç主è¦ç¨éï¼ãç§»å¨åºç¨ãæ¡é¢åºç¨ãæå¡å¨ç«¯åºç¨ãæ æå¡ãåµå ¥å¼ç³»ç»ççãå¨å¦ä¹ JavaScript æ ¸å¿ç¹æ§çåæ¶ï¼äºè§£å®¿ä¸»æä¾çç¹æ§ä¹å¾éè¦ï¼ä»¥ä¾¿å°ç¥è¯ä»è¯¸å®è·µãä¾å¦ï¼ä½ å¯ä»¥é 读ææç Web å¹³å° APIï¼å ¶ç±æµè§å¨å®ç°ï¼ææ¶éæµè§å¨å®¿ä¸»ä¹ä¼å®ç°ã
ç»§ç»æ¢ç´¢æ¬ææä¾äºå ³äºåç§ JavaScript ç¹æ§ä¸å ¶ä»è¯è¨ç¸æ¯çåºæ¬è§è§£ãå¦æä½ æ³äºè§£æ´å¤å ³äºè¯è¨æ¬èº«ä»¥åæ¯ä¸ªç¹æ§çç»å¾®å·®å«ï¼å¯ä»¥é 读 JavaScript æå å JavaScript åèã
ç±äºç¯å¹ å夿æ§ï¼æä»¬çç¥äºè¯è¨çä¸äºåºæ¬é¨åï¼ä½ä½ å¯ä»¥èªè¡æ¢ç´¢ï¼
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