JavaScript æä¸ä¸ªåºäºäºä»¶å¾ªç¯çè¿è¡æ¶æ¨¡åï¼äºä»¶å¾ªç¯è´è´£æ§è¡ä»£ç ãæ¶éåå¤çäºä»¶ä»¥åæ§è¡éåä¸çåä»»å¡ãè¿ä¸ªæ¨¡åä¸å ¶ä»è¯è¨ä¸çæ¨¡åæªç¶ä¸åï¼æ¯å¦ C å Javaã
è¿è¡æ¶æ¦å¿µæ¥ä¸æ¥çå 容解éäºè¿ä¸ªç论模åãç°ä»£ JavaScript 弿å®ç°å¹¶çéä¼åäºä»¥ä¸æè¿°çè¿äºè¯ä¹ã
å¯è§åæè¿° æ 彿°è°ç¨å½¢æäºä¸ä¸ªç±è¥å¹²å¸§å å èæçæ ã
function foo(b) {
const a = 10;
return a + b + 11;
}
function bar(x) {
const y = 3;
return foo(x * y);
}
const baz = bar(7); // å° 42 èµå¼ç» baz
æ§è¡é¡ºåºï¼
bar
æ¶ï¼ç¬¬ä¸ä¸ªå¸§è¢«å建并åå
¥æ ä¸ï¼å¸§ä¸å
å«äº bar
çåæ°å¼ç¨åå±é¨åéãbar
è°ç¨ foo
æ¶ï¼ç¬¬äºä¸ªå¸§è¢«å建并被åå
¥æ ä¸ï¼æ¾å¨ç¬¬ä¸ä¸ªå¸§ä¹ä¸ï¼å¸§ä¸å
å« foo
çåæ°å¼ç¨åå±é¨åéãfoo
æ§è¡å®æ¯ç¶åè¿åæ¶ï¼ç¬¬äºä¸ªå¸§å°±è¢«å¼¹åºæ ï¼å©ä¸ bar
彿°çè°ç¨å¸§ï¼ãbar
乿§è¡å®æ¯ç¶åè¿åæ¶ï¼ç¬¬ä¸ä¸ªå¸§ä¹è¢«å¼¹åºï¼æ 就被æ¸
空äºã注æåæ°åå±é¨åéå¯è½ç»§ç»åå¨ï¼å 为å®ä»¬å¨æ çå¤é¨åå¨ââæä»¥å¨åµå¥å½æ°çå¤é¨å½æ°è¿ååï¼å®ä»¬ä»è½è¢«ä»»æçåµå¥å½æ°è®¿é®ã
å 对象被åé å¨å ä¸ï¼å æ¯ä¸ä¸ªç¨æ¥è¡¨ç¤ºä¸å¤§åï¼é常æ¯éç»æåçï¼å ååºåçè®¡ç®æºæ¯è¯ã
éåJavaScript è¿è¡æ¶å å«ä¸ä¸ªå¾ å¤çæ¶æ¯çæ¶æ¯éåãæ¯ä¸ä¸ªæ¶æ¯é½å ³èçä¸ä¸ªç¨ä»¥å¤çè¿ä¸ªæ¶æ¯çåè°å½æ°ã
å¨äºä»¶å¾ªç¯æé´çæä¸ªæ¶å»ï¼è¿è¡æ¶ä¼å¼å§å¤çæå è¿å ¥éåçæ¶æ¯ã被å¤ççæ¶æ¯ä¼è¢«ç§»åºéåï¼å¹¶ä½ä¸ºè¾å ¥åæ°æ¥è°ç¨ä¸ä¹å ³èç彿°ãæ£å¦å颿æå°çï¼è°ç¨ä¸ä¸ªå½æ°æ»æ¯ä¼ä¸ºå ¶åé ä¸ä¸ªæ°çæ 帧ã
彿°çå¤çä¼ä¸ç´è¿è¡å°æ§è¡æ 忬¡ä¸ºç©ºä¸ºæ¢ï¼ç¶åäºä»¶å¾ªç¯å°ä¼å¤çéåä¸çä¸ä¸ä¸ªæ¶æ¯ï¼å¦æè¿æçè¯ï¼ã
äºä»¶å¾ªç¯ä¹æä»¥ç§°ä¹ä¸ºäºä»¶å¾ªç¯ï¼æ¯å 为å®ç»å¸¸æç §ç±»ä¼¼å¦ä¸çæ¹å¼è¢«å®ç°ï¼
while (queue.waitForMessage()) {
queue.processNextMessage();
}
queue.waitForMessage()
ä¼åæ¥å°çå¾
æ¶æ¯å°è¾¾ (妿å½å没æä»»ä½æ¶æ¯çå¾
被å¤ç)ã
æ¯ä¸ä¸ªæ¶æ¯å®æ´å°æ§è¡åï¼å ¶ä»æ¶æ¯æä¼è¢«æ§è¡ã
è¿ä¸ºç¨åºçåææä¾äºä¸äºä¼ç§çç¹æ§ï¼å æ¬ï¼å½ä¸ä¸ªå½æ°æ§è¡æ¶ï¼å®ä¸ä¼è¢«æ¢å ï¼åªæå¨å®è¿è¡å®æ¯ä¹åæä¼å»è¿è¡ä»»ä½å ¶ä»ç代ç ï¼æè½ä¿®æ¹è¿ä¸ªå½æ°æä½çæ°æ®ãè¿ä¸ C è¯è¨ä¸åï¼ä¾å¦ï¼å¦æå½æ°å¨çº¿ç¨ä¸è¿è¡ï¼å®å¯è½å¨ä»»ä½ä½ç½®è¢«å¨å¦ä¸ä¸ªçº¿ç¨ä¸è¿è¡å ¶ä»ä»£ç çè¿è¡æ¶ç³»ç»ç»æ¢ã
è¿ä¸ªæ¨¡åçä¸ä¸ªç¼ºç¹å¨äºå½ä¸ä¸ªæ¶æ¯éè¦å¤ªé¿æ¶é´æè½å¤ç宿¯æ¶ï¼Web åºç¨ç¨åºå°±æ æ³å¤çç¨æ·ç交äºï¼ä¾å¦ç¹å»ææ»å¨ã为äºç¼è§£è¿ä¸ªé®é¢ï¼æµè§å¨ä¸è¬ä¼å¼¹åºä¸ä¸ªâè¿ä¸ªèæ¬è¿è¡æ¶é´è¿é¿âçå¯¹è¯æ¡ãæä½³å®è·µæ¯ç¼©çåä¸ªæ¶æ¯å¤çæ¶é´ï¼å¹¶å¨å¯è½çæ åµä¸å°ä¸ä¸ªæ¶æ¯è£åªæå¤ä¸ªæ¶æ¯ã
æ·»å æ¶æ¯å¨æµè§å¨éï¼æ¯å½ä¸ä¸ªäºä»¶åç并䏿ä¸ä¸ªäºä»¶çå¬å¨ç»å®å¨è¯¥äºä»¶ä¸æ¶ï¼ä¸ä¸ªæ¶æ¯å°±ä¼è¢«æ·»å è¿æ¶æ¯éåãå¦ææ²¡æäºä»¶çå¬å¨ï¼è¿ä¸ªäºä»¶å°ä¼ä¸¢å¤±ãæä»¥å½ä¸ä¸ªå¸¦æç¹å»äºä»¶å¤çå¨çå
ç´ è¢«ç¹å»æ¶ï¼å°±ä¼åå
¶ä»äºä»¶ä¸æ ·äº§çä¸ä¸ªç±»ä¼¼çæ¶æ¯ãç¶èï¼ä¸äºäºä»¶åæ¥åçï¼æ²¡æäº§çæ¶æ¯ââä¾å¦ï¼éè¿ click
æ¹æ³æ¨¡æçç¹å»ã
彿° setTimeout()
æ¥åçåä¸¤ä¸ªåæ°ï¼ä¸ä¸ªæ¯å¾
å å
¥éåçæ¶æ¯ï¼ä¸ä¸ªæ¯æ¶é´å¼ï¼å¯éï¼é»è®¤ä¸º 0ï¼ãè¿ä¸ªæ¶é´å¼ä»£è¡¨äºæ¶æ¯è¢«å®é
å å
¥å°éåçæå°å»¶è¿æ¶é´ã妿éå䏿²¡æå
¶ä»æ¶æ¯å¹¶ä¸æ 为空ï¼å¨è¿æ®µå»¶è¿æ¶é´è¿å»ä¹åï¼æ¶æ¯ä¼è¢«é©¬ä¸å¤çãç¶èï¼å¦ææå
¶ä»æ¶æ¯ï¼setTimeout()
æ¶æ¯å¿
é¡»çå¾
å
¶ä»æ¶æ¯å¤çå®ãå æ¤ç¬¬äºä¸ªåæ°ä»
ä»
表示æå°å»¶è¿æ¶é´ï¼èéç¡®åççå¾
æ¶é´ã
ä¸é¢çä¾åæ¼ç¤ºäºè¿ä¸ªæ¦å¿µï¼setTimeout()
å¹¶ä¸ä¼å¨è®¡æ¶å¨å°æä¹åç´æ¥æ§è¡ï¼ï¼
const seconds = new Date().getTime() / 1000;
setTimeout(() => {
// è¾åºâ2âï¼è¡¨ç¤ºåè°å½æ°å¹¶æ²¡æå¨ 500 毫ç§ä¹åç«å³æ§è¡
console.log(`å¨ ${new Date().getTime() / 1000 - seconds} ç§åè¿è¡`);
}, 500);
while (true) {
if (new Date().getTime() / 1000 - seconds >= 2) {
console.log("å¾å¥½ï¼å¨ 2 ç§å循ç¯");
break;
}
}
é¶å»¶è¿
é¶å»¶è¿å¹¶ä¸æå³çåè°ä¼å¨ 0 毫ç§åæ§è¡ã以 0 为第äºåæ°è°ç¨ setTimeout()
å¹¶ä¸è¡¨ç¤ºå¨ 0 毫ç§åå°±è°ç¨åè°å½æ°ã
å
¶çå¾
çæ¶é´åå³äºéåéå¾
å¤ççæ¶æ¯æ°éãå¨ä¸é¢çä¾åä¸ï¼"è¿æ¯ä¸æ¡æ¶æ¯"
å°ä¼å¨åè°è·å¾å¤çä¹åè¾åºå°æ§å¶å°ï¼è¿æ¯å 为延è¿åæ°æ¯è¿è¡æ¶å¤çè¯·æ±æéçæå°çå¾
æ¶é´ï¼ä½å¹¶ä¸ä¿è¯æ¯åç¡®ççå¾
æ¶é´ã
åºæ¬ä¸ï¼setTimeout()
éè¦çå¾
å½åéå䏿æçæ¶æ¯é½å¤ç宿¯ä¹åæè½æ§è¡ï¼å³ä½¿å·²ç»è¶
åºäºç±ç¬¬äºåæ°ææå®çæ¶é´ã
(function () {
console.log("è¿æ¯å¼å§");
setTimeout(function cb() {
console.log("åè° 1ï¼è¿æ¯æ¥èªç¬¬ä¸ä¸ªåè°çæ¶æ¯");
});
console.log("è¿æ¯ä¸æ¡æ¶æ¯");
setTimeout(function cb1() {
console.log("åè° 2ï¼è¿æ¯æ¥èªç¬¬äºä¸ªåè°çæ¶æ¯");
}, 0);
console.log("è¿æ¯ç»æ");
})();
// "è¿æ¯å¼å§"
// "è¿æ¯ä¸æ¡æ¶æ¯"
// "è¿æ¯ç»æ"
// "åè° 1ï¼è¿æ¯æ¥èªç¬¬ä¸ä¸ªåè°çæ¶æ¯"
// "åè° 2ï¼è¿æ¯æ¥èªç¬¬äºä¸ªåè°çæ¶æ¯"
å¤ä¸ªè¿è¡æ¶äºç¸éä¿¡
Web worker æè
è·¨æºç iframe
齿èªå·±çæ ãå åæ¶æ¯éåã两个ä¸åçè¿è¡æ¶åªè½éè¿ postMessage
æ¹æ³è¿è¡éä¿¡ã妿å¦ä¸ä¸ªè¿è¡æ¶ä¾¦å¬ message
äºä»¶ï¼åæ¤æ¹æ³ä¼å该è¿è¡æ¶æ·»å æ¶æ¯ã
JavaScript çäºä»¶å¾ªç¯æ¨¡åä¸è®¸å¤å
¶ä»è¯è¨ä¸åçä¸ä¸ªé常æè¶£çç¹æ§æ¯ï¼å®æ°¸ä¸é»å¡ãå¤ç I/O é常éè¿äºä»¶ååè°æ¥æ§è¡ï¼æä»¥å½åºç¨ç¨åºæ£çå¾
ä¸ä¸ª IndexedDB æ¥è¯¢è¿åæè
ä¸ä¸ª fetch()
请æ±è¿åæ¶ï¼å®ä»ç¶å¯ä»¥å¤çå
¶ä»äºæ
ï¼æ¯å¦ç¨æ·è¾å
¥ã
ç±äºåå²åå æä¸äºä¾å¤ï¼å¦ alert
æè
忥ç XHRï¼ä½åºè¯¥å°½éé¿å
使ç¨å®ä»¬ã注æï¼ä¾å¤çä¾å¤ä¹æ¯åå¨çï¼ä½é常æ¯å®ç°é误èéå
¶ä»åå ï¼ã
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