æ¬ç« 讨论 JavaScript çåºæ¬è¯æ³ãåé声æãæ°æ®ç±»åååé¢éã
åºç¡JavaScript ç大é¨åè¯æ³ä» JavaãC å C++ åé´èæ¥ï¼ä½åæ¶ä¹åå° AwkãPerl å Python çå½±åã
JavaScript æ¯åºå大å°åçï¼å¹¶ä½¿ç¨ Unicode å符éã举个ä¾åï¼å¯ä»¥å°åè¯ Frühï¼å¨å¾·è¯ä¸æææ¯âæ©âï¼ç¨ä½åéåã
使¯ï¼ç±äº JavaScript æ¯å¤§å°åææçï¼å æ¤åé früh
å Früh
åæ¯ä¸¤ä¸ªä¸åçåéã
å¨ JavaScript ä¸ï¼æä»¤è¢«ç§°ä¸ºè¯å¥ï¼å¹¶ç¨åå·ï¼;ï¼è¿è¡åéã
妿䏿¡è¯å¥ç¬å ä¸è¡çè¯ï¼é£ä¹åå·æ¯å¯ä»¥çç¥çãä½å¦æä¸è¡ä¸æå¤æ¡è¯å¥ï¼é£ä¹è¿äºè¯å¥å¿ é¡»ç¨åå·è¿è¡åéã
夿³¨ï¼ ECMAScript è§å®äºå¨è¯å¥çæ«å°¾èªå¨æå ¥åå·ï¼ASIï¼ãï¼æ³è¦äºè§£æ´å¤ä¿¡æ¯ï¼åè§æå ³ JavaScript çè¯æ³è¯æ³ç详ç»åèãï¼
ç¶èï¼å¨ä¸æ¡è¯å¥çæ«å°¾æ»æ¯å ä¸åå·è¢«è®¤ä¸ºæ¯æä½³å®è·µï¼å³ä½¿æ¯å¨éä¸¥æ ¼éè¦çæ¶åãè¿ä¸ªä¹ æ¯å¯ä»¥å¤§å¤§åå°ä»£ç åºé®é¢çå¯è½æ§ã
ä»å·¦å¾å³æ«æ JavaScript èæ¬çæºææ¬å¹¶å°å ¶è½¬æ¢ä¸ºè¾å ¥å ç´ ï¼tokenãæ§å¶å符ãè¡ç»æ¢ç¬¦ã注éå空ç½å符ï¼ç©ºç½å符æçæ¯ç©ºæ ¼ãå¶è¡¨ç¬¦åæ¢è¡ç¬¦çï¼åºåã
æ³¨éæ³¨éè¯æ³å C++ 以å许å¤å ¶ä»è¯è¨ç注éè¯æ³ä¸æ ·ï¼
// åè¡æ³¨é
/* è¿æ¯ä¸ä¸ªæ´é¿çï¼
* å¤è¡æ³¨é
*/
ä½ ä¸è½åµå¥å注éãè¿ä¸ªæ
åµé常æ¯ä½ 卿³¨é䏿å¤å°å
å«äº */
åºåï¼èå®ä¼ç»æè¿æ®µæ³¨éã
/* ç¶èï¼ä½ ä¸è½ï¼/* åµå¥æ³¨é */ è¯æ³é误 */
å¨è¿ä¸ªä¾åä¸ï¼ä½ éè¦ç ´å */
模å¼ãä¾å¦ï¼æå
¥åææ ï¼
/* ä½ å¯ä»¥éè¿è½¬ä¹æ£ææ /* åµå¥æ³¨é *\/ */
注éçè¡ä¸ºç±»ä¼¼äºç©ºç½å符ï¼å¨èæ¬æ§è¡è¿ç¨ä¸ä¼è¢«å¿½ç¥ã
夿³¨ï¼ ä½ å¯è½ä¹ä¼å¨ä¸äº JavaScript æä»¶çå¼å¤´è§å°å #!/usr/bin/env node
è¿æ ·ç第ä¸ç§æ³¨éã
å®å«å hashbang 注éè¯æ³ï¼æ¯ä¸ç§ç¨äºæå®æ§è¡èæ¬çç¹å® Javascript å¼æè·¯å¾çç¹æ®æ³¨éãæ³è¦äºè§£æ´å¤ç»èï¼åè§ Hashbang 注éã
声æJavaScript æä¸ç§åéå£°ææ¹å¼ã
var
声æä¸ä¸ªåéï¼å¯éæ©å°å ¶åå§å为ä¸ä¸ªå¼ã
let
声æä¸ä¸ªå级ä½ç¨åçå±é¨åéï¼å¯éæ©å°å ¶åå§å为ä¸ä¸ªå¼ã
const
声æä¸ä¸ªå级ä½ç¨åçåªè¯»å½å常éã
å¨åºç¨ç¨åºä¸ï¼ä½ å°åéç¨ä½å¼ç符å·åãåéçåååå«åæ è¯ç¬¦ï¼å ¶éè¦éµå®ä¸å®çè§åã
JavaScript æ è¯ç¬¦é叏以忝ãä¸å线ï¼_
ï¼æè
ç¾å
符å·ï¼$
ï¼å¼å¤´ï¼åç»çå符ä¹å¯ä»¥æ¯æ°åï¼0
-9
ï¼ãå 为 JavaScript æ¯åºå大å°åçï¼æä»¥åæ¯å
å«ä» A
å° Z
ç大å忝åä» a
å° z
çå°å忝ã
ä½ å¯ä»¥å¨æ è¯ç¬¦ä¸ä½¿ç¨å¤§é¨å Unicode 忝ï¼ä¾å¦ Ã¥
å ü
ï¼æ³è¦äºè§£æ´å¤ç»èï¼åè§è¯æ³è¯æ³åèï¼ãä½ ä¹å¯ä»¥å¨æ è¯ç¬¦ä¸ä½¿ç¨ Unicode 转ä¹åºå表示å符ã
åæ³çæ è¯ç¬¦ç¤ºä¾ï¼Number_hits
ãtemp99
ã$credit
å _name
ã
ä½ å¯ä»¥ç¨ä»¥ä¸ä¸¤ç§æ¹å¼å£°æåéï¼
var
ãä¾å¦ var x = 42
ãè¿ä¸ªè¯æ³å¯ä»¥ç¨æ¥å£°æå±é¨åéåå
¨å±åéï¼å
·ä½åå³äºæ§è¡ä¸ä¸æãconst
æ let
ãä¾å¦ let y = 13
ãè¿ä¸ªè¯æ³å¯ä»¥ç¨æ¥å£°æå级ä½ç¨åçå±é¨åéãï¼åè§ä¸æ¹çåéä½ç¨åãï¼ä½ å¯ä»¥ä½¿ç¨è§£æè¯æ³å£°æç¨äºè§£å
å¼çåéãä¾å¦ const { bar } = foo
ãè¿ä¼å建ä¸ä¸ªå为 bar
çåéï¼å¹¶ä¸å° foo
对象ä¸å±æ§åä¸ä¹ç¸åç屿§çå¼èµç»å®ã
åºè¯¥æ»æ¯å¨å£°æåéå使ç¨å®ä»¬ãJavaScript è¿å»å è®¸ç»æªå£°æçåéèµå¼ï¼èè¿ä¼å建ä¸ä¸ª**æªå£°æçå ¨å±**åéãè¿å¨ä¸¥æ ¼æ¨¡å¼ä¸æ¯ä¸ä¸ªé误ï¼åºè¯¥å½»åºé¿å 使ç¨å®ã
声æååå§åå¨ let x = 42
è¿æ ·çè¯å¥ä¸ï¼let x
ç§°ä½å£°æï¼= 42
ç§°ä½åå§åå¨ã声æå
许å¨åç»ç代ç ä¸è®¿é®åéæ¶ä¸ä¼æåº ReferenceError
ï¼èåå§åå¨ä¼ç»åéèµå¼ãå¨ var
å let
声æä¸ï¼åå§å卿¯å¯éçã妿声æåéæ¶æ²¡æè¿è¡åå§åï¼åéä¼è¢«èµå¼ä¸º undefined
ã
let x;
console.log(x); // è¾åºâundefinedâ
æ¬è´¨ä¸ï¼let x = 42
çä»·äº let x; x = 42
ã
const
å£°ææ»æ¯éè¦åå§åå¨ï¼å 为å®ä»¬ç¦æ¢å¨å£°æåè¿è¡ä»»ä½ç±»åçèµå¼ï¼ä»¥åéå¼å°å°å
¶åå§å为 undefined
å¾å¯è½æ¯ç¨åºåç¯çéã
const x; // SyntaxError: Missing initializer in const declaration
åéä½ç¨å
ä¸ä¸ªåéå¯è½å±äºä¸åä½ç¨åä¹ä¸ï¼
æ¤å¤ï¼ç¨ let
æ const
声æçåéå±äºå¦ä¸ä¸ªä½ç¨åï¼
å½ä½ å¨å½æ°çå¤é¨å£°æåéæ¶ï¼è¯¥åé被称ä½å ¨å±åéï¼å 为å½åææ¡£ä¸ä»»ä½å ¶ä»ä»£ç é½è½ä½¿ç¨å®ãå½ä½ å¨å½æ°å 声æåéæ¶ï¼è¯¥åé被称ä½å±é¨åéï¼å 为å®ä» å¨é£ä¸ªå½æ°å å¯ç¨ã
let
å const
声æä¹ä¼è¢«éå¶å¨å£°ææå¨çåè¯å¥ä¸ã
if (Math.random() > 0.5) {
const y = 5;
}
console.log(y); // ReferenceError: y is not defined
ç¶èï¼ç¨ var
å建çåé䏿¯å级ä½ç¨åçï¼èåªæ¯åæå¨ç*彿°ï¼æå
¨å±ä½ç¨åï¼*çã
ä¾å¦ï¼ä¸å代ç ä¼è¾åº 5
ï¼å 为 x
çä½ç¨åæ¯å
¨å±ä¸ä¸æï¼å¦æä»£ç æ¯å½æ°çä¸é¨åçè¯ï¼å°±æ¯å½æ°ä¸ä¸æï¼ãx
çä½ç¨åä¸åéè¿ç if
è¯å¥åçéå¶ã
if (true) {
var x = 5;
}
console.log(x); // x æ¯ 5
åéæå
ç¨ var
声æçåéä¼è¢«æåï¼æå³çä½ å¯ä»¥å¨è¯¥åéæå¨çä½ç¨åçä»»æå°æ¹å¼ç¨è¯¥åéï¼å³ä½¿è¿æ²¡æå°è¾¾åé声æçå°æ¹ãä½ å¯ä»¥çè§ var
声æå¥½å被æåå°è¯¥åéç彿°æå
¨å±ä½ç¨åçé¡¶é¨ãç¶èï¼å¦æä½ å¨å£°æåéä¹å访é®è¯¥åéï¼å
¶å¼æ»æ¯ undefined
ï¼å ä¸ºåªæè¯¥åéç声æåé»è®¤åå§åï¼ä¸º undefined
ï¼è¢«æåï¼è䏿¯å®çå¼èµå¼ã
console.log(x === undefined); // true
var x = 3;
(function () {
console.log(x); // undefined
var x = "å±é¨å¼";
})();
ä¸é¢çä¾åå¯ä»¥è¢«è§£é为ï¼
var x;
console.log(x === undefined); // true
x = 3;
(function () {
var x;
console.log(x); // undefined
x = "å±é¨å¼";
})();
ç±äºåå¨åéæåï¼ä¸ä¸ªå½æ°ä¸ææç var
è¯å¥åºå°½å¯è½å°æ¾å¨æ¥è¿å½æ°é¡¶é¨çå°æ¹ãè¿ä¸ªæä½³å®è·µä¼æå代ç çæ¸
æ°åº¦ã
let
å const
æ¯å¦è¢«æåæ¯ä¸ªå®ä¹äºè®ºãå¨åé声æä¹åå¼ç¨åä¸çåéï¼å°æ»æ¯æåº ReferenceError
ï¼å 为该åéä½äºä»åçå¼å§å°å£°ææå¨çâææ¶æ§æ»åºâä¸ã
console.log(x); // ReferenceError
const x = 3;
console.log(y); // ReferenceError
let y = 3;
ä¸ var
声æä¸åï¼å
¶ä»
æå声æï¼ä¸æåå
¶å¼ï¼ï¼å½æ°å£°ææ¯å
¨é¨è¢«æåââä½ å¯ä»¥å¨è¯¥å½æ°çä½ç¨åä¸çä»»ä½å°æ¹å®å
¨å°è°ç¨å½æ°ãæ³è¦äºè§£æ´å¤è®¨è®ºï¼åè§æåæ¯è¯æ¡ç®ã
å®é ä¸ï¼å ¨å±åéæ¯å ¨å±å¯¹è±¡ç屿§ã
å¨ç½é¡µä¸ï¼å
¨å±å¯¹è±¡æ¯ window
ï¼æä»¥ä½ å¯ä»¥ç¨ window.variable
è¯æ³è¯»åå设置å
¨å±åéã卿æçç¯å¢ä¸ï¼globalThis
åéï¼å
¶èªèº«ä¹æ¯ä¸ä¸ªå
¨å±åéï¼å¯ä»¥è¢«ç¨äºè¯»åå设置å
¨å±åéãè¿ä¸ºä¸å JavaScript è¿è¡æ¶æä¾äºä¸ä¸ªä¸è´çæ¥å£ã
å æ¤ï¼ä½ å¯ä»¥éè¿æå® window
æ frame
çååï¼å¨å½å window æ frame 访é®å¦ä¸ä¸ª window æ frame ä¸å£°æçåéãä¾å¦ï¼å¦æå¨ææ¡£ä¸å£°æäºä¸ä¸ªå« phoneNumber
çåéï¼é£ä¹ä½ å°±å¯ä»¥å¨ iframe
ä¸ä½¿ç¨ parent.phoneNumber
å¼ç¨å®ã
ä½ å¯ä»¥ç¨ const
å
³é®åå建ä¸ä¸ªåªè¯»å½å常éãå¸¸éæ è¯ç¬¦çè¯æ³åä»»ä½åéæ è¯ç¬¦çè¯æ³ç¸åï¼å¿
须以忝ãä¸å线æç¾å
符å·ï¼$
ï¼å¼å¤´å¹¶å¯ä»¥å
å«åæ¯ãæ°åæä¸å线ã
常éä¸å¯ä»¥éè¿èµå¼æ¥æ¹åå
¶å¼æå¨èæ¬è¿è¡æ¶è¢«éæ°å£°æãå¿
须为å
¶åå§åä¸ä¸ªå¼ã常éçä½ç¨åè§åå let
å级ä½ç¨ååéçä¸è´ã
å¨åä¸ä½ç¨åä¸ï¼ä¸è½ä½¿ç¨ä¸åéåæå½æ°åç¸åçå忥声æå¸¸éãä¾å¦ï¼
// è¿ä¼é æé误
function f() {}
const f = 5;
// è¿ä¹ä¼é æé误
function f() {
const g = 5;
var g;
}
ç¶èï¼const
ä»
黿¢éæ°èµå¼ï¼èä¸é»æ¢ä¿®æ¹ã被èµå¼ä¸ºå¸¸éç对象ç屿§æ¯ä¸åä¿æ¤çï¼æä»¥ä¸é¢çè¯å¥æ§è¡æ¶ä¸ä¼äº§çé误ã
const MY_OBJECT = { key: "å¼" };
MY_OBJECT.key = "å
¶ä»å¼";
åæ ·çï¼æ°ç»çå ç´ ä¹æ¯ä¸åä¿æ¤çï¼æä»¥ä¸é¢çè¯å¥æ§è¡æ¶ä¹ä¸ä¼äº§çé误ã
const MY_ARRAY = ["HTML", "CSS"];
MY_ARRAY.push("JAVASCRIPT");
console.log(MY_ARRAY); // ['HTML', 'CSS', 'JAVASCRIPT'];
æ°æ®ç»æåç±»å æ°æ®ç±»å
ææ°ç ECMAScript æ åå®ä¹äº 8 ç§æ°æ®ç±»åï¼
ä¸ç§åºæ¬æ°æ®ç±»åï¼
true
å false
ãnull
å Null
ãNULL
æå
¶ä»å使¯ä¸ä¸æ ·çãï¼42
æ 3.14159
ã9007199254740992n
ã"Howdy"
ã以å Object
è½ç¶è¿äºæ°æ®ç±»åç¸å¯¹æ¥è¯´æ¯è¾å°ï¼ä½æ¯å®ä»¬å¯ä»¥è®©ä½ å¨ç¨åºä¸å¼åæç¨çåè½ã彿°æ¯è¿é¨è¯è¨çå¦ä¸ä¸ªåºæ¬å ç´ ãè½ç¶å½æ°ä»ææ¯ä¸è®²æ¯ä¸ç§å¯¹è±¡ï¼ä½æ¯ä½ å¯ä»¥æå¯¹è±¡å½ä½åæ¾å¼çå½å容å¨ï¼ç¶åå°å½æ°å½ä½ä½ çç¨åºè½å¤æ§è¡çè¿ç¨ã
æ°æ®ç±»åç转æ¢JavaScript æ¯ä¸é¨å¨æç±»åè¯è¨ãè¿æå³çä½ å¨å£°æåéæ¶å¯ä»¥ä¸å¿ æå®è¯¥åéçæ°æ®ç±»åãè¿ä¹æå³çå¨èæ¬æ§è¡æé´ä¼æ ¹æ®éè¦èªå¨è½¬æ¢æ°æ®ç±»åã
å æ¤ï¼ä½ å¯ä»¥æç §å¦ä¸æ¹å¼æ¥å®ä¹åéï¼
ç¶åï¼ä½ è¿å¯ä»¥ç»åä¸ä¸ªåéèµäºä¸ä¸ªå符串å¼ï¼ä¾å¦ï¼
answer = "ä¸å®¢æ°ï¼æè°¢ææçé±¼ï¼";
å 为 JavaScript æ¯å¨æç±»åçï¼è¿ç§èµå¼æ¹å¼å¹¶ä¸ä¼æç¤ºåºéã
æ°ååâ+âè¿ç®ç¬¦å¨ä½¿ç¨ +
è¿ç®ç¬¦ç表达å¼ä¸æ¶åæ°ååå符串ï¼JavaScript 伿æ°åè½¬æ¢æå符串ãä¾å¦ï¼æ³¨æä¸åè¯å¥ï¼
x = "çæ¡æ¯ " + 42; // "çæ¡æ¯ 42"
y = 42 + " æ¯çæ¡"; // "42 æ¯çæ¡"
z = "37" + 7; // "377"
å¨ä½¿ç¨å ¶ä»è¿ç®ç¬¦æ¶ï¼JavaScript ä¸ä¼ææ°åè½¬æ¢æå符串ãä¾å¦ï¼
"37" - 7; // 30
"37" * 7; // 259
å符串转æ¢ä¸ºæ°å
æä¸äºæ¹æ³å¯ä»¥å°å åä¸è¡¨ç¤ºä¸ä¸ªæ°åçå符串转æ¢ä¸ºæ°åã
parseInt
åªè¿åæ´æ°ï¼å æ¤å®å¨å¤çå°æ°æ¶ç¨éæéã
夿³¨ï¼ å¦å¤ï¼parseInt
çæä½³å®è·µæ¯æ»æ¯å¸¦ä¸è¿å¶åæ°ï¼è¿ä¸ªåæ°ç¨äºæå®ä½¿ç¨åªä¸ç§è¿å¶ã
å°å符串转æ¢ä¸ºæ°åçå¦ä¸ç§æ¹æ³æ¯ä½¿ç¨ +
ï¼ä¸å
å ï¼è¿ç®ç¬¦ã
"1.1" + "1.1" = "1.11.1"
(+"1.1") + (+"1.1") = 2.2
// 注æï¼æ¬å·æ¯ä¸ºäºæ¸
æ°èµ·è§èæ·»å çï¼ä¸æ¯å¿
éçã
åé¢é
å¨ JavaScript ä¸ï¼åé¢éå¯ä»¥è¡¨ç¤ºå¼ãè¿äºåé¢éæ¯èæ¬ä¸æå颿æç»åºçåºå®çå¼ï¼è䏿¯åéãæ¬èå°ä»ç»ä»¥ä¸ç±»åçåé¢éï¼
æ°ç»åé¢éæ°ç»åé¢éæ¯ç±ä¸å¯¹æ¹æ¬å·ï¼[]
ï¼æ¬èµ·æ¥çå
å«é¶ä¸ªæå¤ä¸ªè¡¨è¾¾å¼çå表ï¼å
¶ä¸æ¯ä¸ªè¡¨è¾¾å¼ä»£è¡¨ä¸ä¸ªæ°ç»å
ç´ ãå½ä½ ä½¿ç¨æ°ç»åé¢éå建æ°ç»æ¶ï¼è¯¥æ°ç»å°ä¼ä»¥æå®çå¼ä½ä¸ºå
¶å
ç´ è¿è¡åå§åï¼èå
¶ length
被设å®ä¸ºæå®çåæ°ç个æ°ã
ä¸é¢ç示ä¾å建äºå«æ 3 个å
ç´ ç coffees
æ°ç»ï¼å®çé¿åº¦æ¯ 3ã
const coffees = ["French Roast", "Colombian", "Kona"];
æ¯æ¬¡åé¢é被æ±å¼æ¶ï¼æ°ç»åé¢éé½ä¼å建ä¸ä¸ªæ°çæ°ç»å¯¹è±¡ãä¾å¦ï¼å¨å ¨å±ä½ç¨åä¸ç¨åé¢éå®ä¹çæ°ç»å¨èæ¬å è½½å被å建ãç¶èï¼å¦ææ°ç»åé¢éä½äºå½æ°å ï¼æ¯æ¬¡è°ç¨å½æ°æ¶ä¼åå§åä¸ä¸ªæ°æ°ç»ã
夿³¨ï¼ æ°ç»åé¢éå建 Array
å¯¹è±¡ãæ³è¦äºè§£æå
³ Array
对象çç»èï¼åè§ Array
åç´¢å¼éåã
å¦æä½ å¨æ°ç»åé¢éä¸è¿ç»æ¾ç½®ä¸¤ä¸ªéå·ï¼æ°ç»ä¼ä¸ºæªæå®çå
ç´ çä¸ä¸ä¸ªç©ºæ§½ã以ä¸ç¤ºä¾å建äºä¸ä¸ªå为 fish
çæ°ç»ï¼
const fish = ["Lion", , "Angel"];
æå°è¿ä¸ªæ°ç»æ¶ï¼ä½ ä¼çè§ï¼
console.log(fish);
// [ 'Lion', <1 empty item>, 'Angel' ]
注æï¼ç¬¬äºé¡¹æ¯âemptyâï¼ä¸å®é
ç undefined
å¼å®å
¨ä¸åãå½ä½¿ç¨æ°ç»éåæ¹æ³ï¼ä¾å¦ï¼Array.prototype.map
ï¼æ¶ï¼ç©ºæ§½ä¼è¢«è·³è¿ãç¶èï¼ç´¢å¼è®¿é® fish[1]
ä»ä¼è¿å undefined
ã
å¦æä½ å¨å ç´ å表ç尾鍿·»å äºä¸ä¸ªéå·ï¼å®å°ä¼è¢«å¿½ç¥ã
å¨ä¸é¢çä¾åä¸ï¼æ°ç»ç length
æ¯ 3ï¼å¹¶ä¸åå¨ myList[3]
è¿ä¸ªå
ç´ ãåè¡¨ä¸ææå
¶ä»çéå·é½è¡¨ç¤ºä¸ä¸ªæ°å
ç´ ã
const myList = ["home", , "school"];
å¨ä¸é¢çä¾åä¸ï¼æ°ç»ç length
æ¯ 4ï¼å
ç´ myList[0]
å myList[2]
缺失ã
const myList = [, "home", , "school"];
åçä¸ä¸ªä¾åãå¨è¿éï¼è¯¥æ°ç»ç length
æ¯ 4ï¼å
ç´ myList[1]
å myList[3]
缺失ãåªææåçé£ä¸ªéå·è¢«å¿½ç¥ã
const myList = ["home", , "school", ,];
夿³¨ï¼ å°¾åéå·å¨å¤è¡æ°ç»ä¸è½ä¿æ git diff æ´æ´ï¼å ä¸ºåæ«å°¾æ·»å å ç´ åªéè¦æ·»å ä¸è¡ï¼èä¸éè¦ä¿®æ¹åé¢çè¡ã
const myList = [
"home",
"school",
+ "hospital",
];
çè§£å¤ä½å¤ä½éå·çè¡ä¸ºå¯¹çè§£ JavaScript è¿é¨è¯è¨ä¹å¾éè¦ã
ç¶èï¼ä½ å¨ä¹¦åä»£ç æ¶ï¼åºè¯¥æ¾å¼å°å°ç¼ºå¤±çå
ç´ å£°æä¸º undefined
ï¼æè
è³å°æå
¥ä¸ä¸ªæ³¨é以çªåºå
ç´ ç¼ºå¤±ãè¿æ ·åè½æé«ä»£ç çæ¸
æ°åº¦åç»´æ¤æ§ã
const myList = ["home", /* 空 */, "school", /* 空 */, ];
å¸å°åé¢é
å¸å°ç±»åæä¸¤ç§åé¢éå¼ï¼true
å false
ã
夿³¨ï¼ ä¸è¦å°åå§å¸å°å¼ true
å false
ä¸ Boolean
对象ççåå弿··ã
å¸å°å¯¹è±¡æ¯åå§å¸å°æ°æ®ç±»åçå
è£
å¨ãæ³è¦äºè§£æ´å¤ä¿¡æ¯ï¼åè§ Boolean
ã
JavaScript æ°ååé¢éå æ¬å¤ç§åºæ°çæ´æ°åé¢éå以 10 ä¸ºåºæ°çæµ®ç¹æ°åé¢éã
å¼å¾ä¸æçæ¯ï¼è¯è¨è§èè¦æ±æ°ååé¢éå¿
é¡»æ¯æ 符å·çã使¯å -123.4
è¿æ ·ç代ç çæ®µè¿æ¯æ²¡æé®é¢çï¼ä¼è¢«è§£é为ä¸å
æä½ç¬¦ -
åºç¨äºæ°ååé¢é 123.4
ã
æ´æ°å BigInt
åé¢éå¯ä»¥ç¨åè¿å¶ï¼åºæ° 10ï¼ãåå
è¿å¶ï¼åºæ° 16ï¼ãå
«è¿å¶ï¼åºæ° 8ï¼åäºè¿å¶ï¼åºæ° 2ï¼è¡¨ç¤ºã
0
ï¼é¶ï¼ã0
ï¼æ 0O
ã0o
ï¼å¼å¤´ï¼åªè½å
æ¬æ°å 0-7ã0x
ï¼æ 0X
ï¼å¼å¤´ï¼å¯ä»¥å
嫿°åï¼0
-9
ï¼å忝 a
-f
æ A
-F
ãï¼å符ç大å°åä¸å½±åæ°å¼ãå æ¤ï¼0xa
= 0xA
= 10
å 0xf
= 0xF
= 15
ãï¼0b
ï¼æ 0B
ï¼å¼å¤´ï¼åªè½å
嫿°å 0
å 1
ãBigInt
ç±æ´æ°åé¢éå n
åç¼ç»æãBigInt
ä¹å¯ä»¥ä½¿ç¨ä¸é¢çåºæ°ã注æåç¼é¶çå
«è¿å¶è¯æ³ï¼ä¾å¦ï¼0123n
ï¼æ¯ä¸å
许çï¼ä½ 0o123n
æ¯å¯ä»¥çãæ´æ°åé¢é举ä¾ï¼
0, 117, 123456789123456789nï¼åè¿å¶ï¼åºæ° 10ï¼ 015, 0001, 0o777777777777nï¼å «è¿å¶ï¼åºæ° 8ï¼ 0x1123, 0x00111, 0x123456789ABCDEFnï¼åå è¿å¶ï¼âhexâæåºæ° 16ï¼ 0b11, 0b0011, 0b11101001010101010101nï¼äºè¿å¶ï¼åºæ° 2ï¼
è¦æ³äºè§£æ´å¤ä¿¡æ¯ï¼åè§è¯æ³è¯æ³åèä¸çæ°ååé¢éã
æµ®ç¹æ°åé¢éæµ®ç¹æ°åé¢éå¯ä»¥æä»¥ä¸çç»æé¨åï¼
ææ°é¨å以 e
æ E
å¼å¤´ï¼åé¢è·çä¸ä¸ªæ´æ°ï¼è¿ä¸ªæ´æ°å¯ä»¥ææ£è´å·ï¼å³åç¼ +
æ -
ï¼ãæµ®ç¹æ°åé¢éè³å°æä¸ä½æ°åï¼èä¸å¿
须另尿°ç¹æè
e
ï¼E
ï¼ã
ç®è¨ä¹ï¼å ¶è¯æ³æ¯ï¼
[digits].[digits][(E|e)[(+|-)]digits]
ä¾å¦ï¼
3.1415926
.123456789
3.1E+12
.1e-23
对象åé¢é
对象åé¢éæ¯ç±ä¸å¯¹è±æ¬å·ï¼{}
ï¼æ¬èµ·æ¥çå
å«é¶ä¸ªæå¤ä¸ªå±æ§ååç¸å
³å¼çå表ã
è¦åï¼ ä½ ä¸è½å¨ä¸æ¡è¯å¥çå¼å¤´å°±ä½¿ç¨å¯¹è±¡åé¢éï¼è¿å°å¯¼è´éè¯¯ï¼æäº§çè¶
åºé¢æçè¡ä¸ºï¼ï¼å ä¸ºæ¤æ¶ {
ä¼è¢«è®¤ä¸ºæ¯ä¸ä¸ªè¯å¥åçèµ·å§ç¬¦å·ã
以䏿¯ä¸ä¸ªå¯¹è±¡åé¢éçä¾åãcar
对象ç第ä¸ä¸ªå
ç´ å®ä¹äºå±æ§ myCar
ï¼è¢«èµå¼ä¸ºä¸ä¸ªæ°å符串ï¼"Saturn"
ï¼ï¼ç¬¬äºä¸ªå
ç´ ï¼å±æ§ getCar
ï¼ç«å³è¢«èµå¼ä¸ºå½æ°è°ç¨ (carTypes("Honda"))
çç»æï¼ç¬¬ä¸ä¸ªå
ç´ ï¼å±æ§ special
ï¼ä½¿ç¨äºä¸ä¸ªå·²æçåéï¼sales
ï¼ã
const sales = "Toyota";
function carTypes(name) {
return name === "Honda" ? name : `对ä¸èµ·ï¼æä»¬ä¸å®å ${name}ã`;
}
const car = { myCar: "Saturn", getCar: carTypes("Honda"), special: sales };
console.log(car.myCar); // Saturn
console.log(car.getCar); // Honda
console.log(car.special); // Toyota
æ´è¿ä¸æ¥çï¼ä½ å¯ä»¥ä½¿ç¨æ°åæå符串åé¢éä½ä¸ºå±æ§çååï¼æè å¨å¦ä¸ä¸ªå¯¹è±¡åé¢éå åµå¥ä¸ä¸ªå¯¹è±¡åé¢éãä¸å示ä¾ä½¿ç¨äºè¿äºå¯é项ã
const car = { manyCars: { a: "Saab", b: "Jeep" }, 7: "Mazda" };
console.log(car.manyCars.b); // Jeep
console.log(car[7]); // Mazda
å¯¹è±¡å±æ§ååå¯ä»¥æ¯ä»»æå符串ï¼å æ¬ç©ºä¸²ãå¦æå¯¹è±¡å±æ§åå䏿¯åæ³ç JavaScript æ è¯ç¬¦ææ°åï¼å®å¿ é¡»ç¨å¼å·å 裹ã
屿§çååä¸åæ³ï¼é£ä¹ä¾¿ä¸è½ç¨ç¹ï¼.
ï¼è®¿é®å±æ§å¼ã
const unusualPropertyNames = {
'': '空å符串',
'!': 'ç °ï¼'
}
console.log(unusualPropertyNames.''); // SyntaxError: Unexpected string
console.log(unusualPropertyNames.!); // SyntaxError: Unexpected token !
èæ¯éè¿æ¹æ¬å·è¡¨ç¤ºæ³ï¼[]
ï¼æ¥è®¿é®ã
console.log(unusualPropertyNames[""]); // 空å符串
console.log(unusualPropertyNames["!"]); // ç °ï¼
å¢å¼ºç对象åé¢é
对象åé¢éæ¯æä¸ç»ç®åè¯æ³ï¼å
æ¬å¨å建æ¶è®¾ç½®ååãfoo: foo
èµå¼çç®åãå®ä¹æ¹æ³ãæ¯æ super
è°ç¨ä»¥å使ç¨è¡¨è¾¾å¼è®¡ç®å±æ§åã
æ»ä¹ï¼è¿äºä¹ä½¿å¯¹è±¡åé¢éåç±»å£°ææ´å ç´§å¯å°è系起æ¥ï¼è®©åºäºå¯¹è±¡ç设计ä»è¿äºä¾¿å©ä¸æ´å åçã
const obj = {
// __proto__
__proto__: theProtoObj,
// âhandler: handlerâçç®å
handler,
// æ¹æ³
toString() {
// Super è°ç¨
return "d " + super.toString();
},
// 计ç®ï¼å¨æçï¼å±æ§å
["prop_" + (() => 42)()]: 42,
};
RegExp åé¢é
ä¸ä¸ªæ£å表达å¼åé¢éï¼è¯¦ç»å®ä¹åè§è¿ç¯æç« ï¼æ¯åç¬¦è¢«æ£ææ å´æç表达å¼ãä¸é¢æ¯æ£å表达å¼åé¢éçä¸ä¸ªç¤ºä¾ã
å符串åé¢éå符串åé¢éæ¯ç±ä¸å¯¹åå¼å·ï¼"
ï¼æåå¼å·ï¼'
ï¼æ¬èµ·æ¥çé¶ä¸ªæå¤ä¸ªå符ãå符串被éå®å¨åç§å¼å·ä¹é´ï¼ä¹å³ï¼å¿
é¡»æ¯æå¯¹åå¼å·ææå¯¹åå¼å·ï¼ã
ä¸é¢æ¯å符串åé¢éç示ä¾ï¼
'foo'
"bar"
'1234'
'ä¸è¡\nå¦ä¸è¡'
"Joyo çç«"
ä½ åºè¯¥ä½¿ç¨å符串åé¢éï¼é¤éä½ ç¹å«éè¦ä½¿ç¨ String
å¯¹è±¡ãæ³è¦äºè§£æå
³ String
对象çç»èï¼åè§ String
ã
ä½ å¯ä»¥å¨å符串åé¢éå¼ä¸ä½¿ç¨ String
å¯¹è±¡çæææ¹æ³ãJavaScript ä¼èªå¨å°å符串åé¢é转æ¢ä¸ºä¸ä¸ªä¸´æ¶å符串对象ï¼è°ç¨è¯¥æ¹æ³ï¼ç¶ååºå¼æé£ä¸ªä¸´æ¶çå符串对象ãä½ ä¹å¯ä»¥ä½¿ç¨å符串åé¢éç length
屿§ã
// å°æå°å符串ä¸çå符个æ°ï¼å
æ¬ç©ºæ ¼ï¼
console.log("John çç«".length); // ç»æä¸ºï¼7
模æ¿åé¢éä¹å¯ç¨ã模æ¿åé¢éç±ä¸å¯¹åå¼å·ï¼`
ï¼ï¼éé³ç¬¦ï¼å
å´ï¼è䏿¯åå¼å·æåå¼å·ã
模æ¿åé¢é为æå»ºå符串æä¾äºè¯æ³ç³ãï¼è¿ä¸ PerlãPython è¿æå ¶ä»è¯è¨ä¸çå符串æå¼çç¹æ§ç¸ä¼¼ãï¼
// åå»ºåºæ¬çå符串åé¢é
`å¨ JavaScript ä¸ï¼â\nâ æ¯æ¢è¡ç¬¦ã`
// å¤è¡å符串
`å¨ JavaScript ä¸ï¼æ¨¡æ¿å符串å¯ä»¥
è·¨è¶è¡ï¼ä½æ¯ç±åå¼å·ååå¼å·
å
裹çå符串ä¸è¡ã`
// å符串æå¼
const name = 'Lev', time = 'today';
`ä½ å¥½ ${name}ï¼${time} è¿å¾æä¹æ ·ï¼`
带æ ç¾çæ¨¡æ¿æ¯ç¨äºæå®æ¨¡æ¿åé¢éå¹¶è°ç¨âæ ç¾â彿°è§£ææ¨¡æ¿åé¢éçç´§åè¯æ³ã带æ ç¾çæ¨¡æ¿æ¿æ´»å½æ°å¤çå符串åä¸ç»ç¸å
³çå¼çæ¹å¼åªæ¯æ´ç®æ´ãæ´è¯ä¹åãæ¨¡æ¿æ ç¾å½æ°çåå卿¨¡æ¿åé¢éçåé¢ââå°±åä¸é¢ç示ä¾ä¸é£æ ·ï¼æ¨¡æ¿æ ç¾å½æ°çå忝 print
ãprint
彿°ä¼æå
¥åæ°ï¼å¹¶å¯¹æ¥æ¶å°çå¯¹è±¡ææ°ç»è¿è¡åºååï¼ä»¥é¿å
讨åç [object Object]
ã
const formatArg = (arg) => {
if (Array.isArray(arg)) {
// æå°ä¸ä¸ªæ åºå表
return arg.map((part) => `- ${part}`).join("\n");
}
if (arg.toString === Object.prototype.toString) {
// è¿ä¸ªå¯¹è±¡ä¼è¢«åºåå为â[object Object]âã
// æä»¬æ¥æå°æ´æ¼äº®çä¸è¥¿ã
return JSON.stringify(arg);
}
return arg;
};
const print = (segments, ...args) => {
// 对äºå½¢å¼è¯å¥½ç模æ¿åé¢éï¼æ»æ¯æ N 个 args å (N+1) 个å符串 segmentsã
let message = segments[0];
segments.slice(1).forEach((segment, index) => {
message += formatArg(args[index]) + segment;
});
console.log(message);
};
const todos = ["å¦ä¹ JavaScript", "å¦ä¹ Web API", "æå»ºç½ç«", "婿¶¦ï¼"];
const progress = { javascript: 20, html: 50, css: 10 };
print`æéè¦åï¼
${todos}
å½åè¿åº¦ä¸ºï¼${progress}
`;
// æéè¦åï¼
// - å¦ä¹ JavaScript
// - å¦ä¹ Web API
// - æå»ºç½ç«
// - 婿¶¦ï¼
// å½åè¿åº¦ä¸ºï¼{"javascript":20,"html":50,"css":10}
å 为带æ ç¾ç模æ¿åé¢éå°±æ¯å½æ°è°ç¨çè¯æ³ç³ï¼ä½ å¯ä»¥å°ä¸é¢çåè½éå为çä»·ç彿°è°ç¨ï¼
print(["æéè¦åï¼\n", "\nå½åè¿åº¦ä¸ºï¼", "\n"], todos, progress);
è¿å¯è½ä¼è®©ä½ æ³èµ· console.log
飿 ¼çæå¼ï¼
console.log("æéè¦åï¼\n%o\nå½åè¿åº¦ä¸ºï¼%o\n", todos, progress);
ä½ å¯ä»¥çå°å¸¦æ ç¾ç模æ¿é è¯»èµ·æ¥æ¯ä¼ ç»çâæ ¼å¼åâ彿°æ´èªç¶ï¼å¨ä¼ ç»çæ ¼å¼å彿°ä¸ï¼ä¸å¾ä¸å°åé忍¡æ¿ç声æåå¼ã
å¨å符串ä¸ä½¿ç¨çç¹æ®å符é¤äºæ®éå符ï¼ä½ ä¹å¯ä»¥å¨å符串ä¸ä½¿ç¨ç¹æ®å符ï¼å¦ä¸ä¾æç¤ºã
以ä¸è¡¨æ ¼å举äºä½ è½å¨ JavaScript çå符串ä¸ä½¿ç¨çç¹æ®å符ã
å符 ææ\0
空åè \b
éæ ¼ç¬¦ \f
æ¢é¡µç¬¦ \n
æ¢è¡ç¬¦ \r
å车符 \t
å¶è¡¨ç¬¦ \v
åç´å¶è¡¨ç¬¦ \'
æå·æåå¼å· \"
åå¼å· \\
åææ å符 \XXX
ç±ä» 0
å° 377
æå¤ä¸ä½å
«è¿å¶æ° XXX
表示ç Latin-1 å符ãä¾å¦ï¼\251
æ¯çæç¬¦å·çå
«è¿å¶åºåã \xXX
ç±ä» 00
å FF
ç两ä½åå
è¿å¶æ°å XX
表示ç Latin-1 å符ãä¾å¦ï¼\xA9
æ¯çæç¬¦å·çåå
è¿å¶åºåã \uXXXX
ç±åä½åå
è¿å¶æ°å XXXX
表示ç Unicode å符ãä¾å¦ï¼\ u00A9
æ¯çæç¬¦å·ç Unicode åºåãè§ Unicode 转ä¹åºåã \u{XXXXX}
Unicode ç ä½è½¬ä¹ãä¾å¦ï¼\u{2F804}
ç¸å½äº Unicode è½¬ä¹ \uD87E\uDC04
ã 转ä¹å符
对äºé£äºæªåºç°å¨è¡¨æ ¼ä¸çå符ï¼å ¶æå¸¦çå坼忿 å°è¢«å¿½ç¥ã使¯ï¼è¿ä¸ç¨æ³å·²è¢«åºå¼ï¼åºå½é¿å 使ç¨ã
éè¿å¨å¼å·åå ä¸åææ ï¼å¯ä»¥å¨åç¬¦ä¸²ä¸æå ¥å¼å·ï¼è¿å°±æ¯å¼å·è½¬ä¹ãä¾å¦ï¼
const quote = "He read \"The Cremation of Sam McGee\" by R.W. Service.";
console.log(quote);
代ç çè¿è¡ç»æä¸ºï¼
He read "The Cremation of Sam McGee" by R.W. Service.
è¦å¨åç¬¦ä¸²ä¸æå
¥åææ åé¢éï¼å¿
须转ä¹åææ ãä¾å¦ï¼è¦ææä»¶è·¯å¾ c:\temp
èµå¼ç»ä¸ä¸ªå符串ï¼å¯ä»¥éç¨å¦ä¸æ¹å¼ï¼
ä¹å¯ä»¥å¨æ¢è¡ä¹åå ä¸åææ ä»¥è½¬ä¹æ¢è¡ãè¿æ ·åææ åæ¢è¡é½ä¸ä¼åºç°å¨å符串çå¼ä¸ã
const str =
"this string \
is broken \
across multiple \
lines.";
console.log(str); // this string is broken across multiple lines.
æ´å¤ä¿¡æ¯
æ¬ç« éç¹å æ¬å£°æåç±»åçåºæ¬è¯æ³ãæ³è¦å¦ä¹ æå ³ 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