Baseline Widely available
for
è¯å¥ç¨äºå建ä¸ä¸ªå¾ªç¯ï¼å®å
å«äºä¸ä¸ªå¯éç表达å¼ï¼è¿ä¸ä¸ªè¡¨è¾¾å¼è¢«å
å´å¨åæ¬å·ä¹ä¸ï¼ä½¿ç¨åå·åéï¼åè·ä¸ä¸ªç¨äºå¨å¾ªç¯ä¸æ§è¡çè¯å¥ï¼é常æ¯ä¸ä¸ªåè¯å¥ï¼ã
let str = "";
for (let i = 0; i < 9; i++) {
str = str + i;
}
console.log(str);
// Expected output: "012345678"
è¯æ³
for (initialization; condition; afterthought)
statement
initialization
å¯é
å¨å¾ªç¯å¼å§ååå§åç表达å¼ï¼å
å«èµå¼è¡¨è¾¾å¼ï¼æè
åé声æãé常ç¨äºåå§å计æ°å¨åéã该表达å¼å¯ä»¥éæ©ä½¿ç¨ var
æ let
å
³é®åå£°ææ°çåéï¼ä½¿ç¨ var
声æçåé䏿¯è¯¥å¾ªç¯çå±é¨åéï¼èæ¯ä¸ for
循ç¯å¤å¨åæ ·çä½ç¨åä¸ãç¨ let
声æçå鿝è¯å¥çå±é¨åéã
该表达å¼çç»æä¼è¢«ä¸¢å¼ã
condition
å¯é
æ¯æ¬¡å¾ªç¯è¿ä»£ä¹åè¦å¤å®ç表达å¼ãå¦æè¯¥è¡¨è¾¾å¼çå¤å®ç»æä¸ºçï¼statement
å°è¢«æ§è¡ã妿å¤å®ç»æä¸ºåï¼é£ä¹æ§è¡æµç¨å°éåºå¾ªç¯ï¼å¹¶è½¬å° for
ç»æåé¢çç¬¬ä¸æ¡è¯å¥ã
è¿ä¸ªæ¡ä»¶æµè¯æ¯å¯éçã妿çç¥ï¼è¯¥æ¡ä»¶æ»æ¯è®¡ç®ä¸ºçã
afterthought
å¯é
æ¯æ¬¡å¾ªç¯è¿ä»£ç»ææ¶æ§è¡ç表达å¼ãæ§è¡æ¶æºæ¯å¨ä¸ä¸æ¬¡å¤å® condition
ä¹åãé常被ç¨äºæ´æ°æè
éå¢è®¡æ°å¨åéã
statement
åªè¦æ¡ä»¶çå¤å®ç»æä¸ºçå°±ä¼è¢«æ§è¡çè¯å¥ãä½ å¯ä»¥ä½¿ç¨åè¯å¥æ¥æ§è¡å¤ä¸ªè¯å¥ãå¦ææ²¡æä»»ä½è¯å¥è¦æ§è¡ï¼è¯·ä½¿ç¨ä¸ä¸ªç©ºè¯å¥ï¼;
ï¼ã
å°±åå
¶ä»å¾ªç¯è¯å¥ï¼ä½ å¯ä»¥å¨ statement
ä¸ä½¿ç¨æ§å¶æµç¨è¯å¥ï¼
break
忢 statement
çæ§è¡ï¼å¹¶è½¬å°å¾ªç¯åçç¬¬ä¸æ¡è¯å¥ãcontinue
忢 statement
çæ§è¡ï¼å¹¶éæ°æ§è¡ afterthought
ï¼ç¶åæ¯ condition
ãä¸é¢ç for
è¯å¥é¦å
声æäºåé i
并被å°å
¶åå§å为 0
ã宿£æ¥ i
æ¯å¦å°äºä¹ï¼æ§è¡ä¸¤ä¸ªåç»è¯å¥ï¼å¹¶å¨æ¯æ¬¡å¾ªç¯åå° i
å¢å 1ã
for (var i = 0; i < 9; i++) {
console.log(i);
// æ´å¤è¯å¥
}
åå§ååçè¯æ³
åå§å忥å表达å¼ååé声æãç¶èï¼è¡¨è¾¾å¼ä¸è½ä½¿ç¨æ²¡ææ¬å·ç in
è¿ç®ç¬¦ï¼å 为è¿ä¸ for...in
å¾ªç¯ææ§ä¹ã
for (let i = "start" in window ? window.start : 0; i < 9; i++) {
console.log(i);
}
// SyntaxError: 'for-in' loop variable declaration may not have an initializer.
// å°æ´ä¸ªåå§å卿¬èµ·æ¥
for (let i = ("start" in window ? window.start : 0); i < 9; i++) {
console.log(i);
}
// å° `in` è¡¨è¾¾å¼æ¬èµ·æ¥
for (let i = ("start" in window) ? window.start : 0; i < 9; i++) {
console.log(i);
}
å¯éç for 表达å¼
for
循ç¯å¤´é¨ä¸çä¸ä¸ªè¡¨è¾¾å¼é½æ¯å¯éçãä¾å¦ï¼ä¸éè¦ä½¿ç¨ initialization
忥åå§ååéï¼
let i = 0;
for (; i < 9; i++) {
console.log(i);
// æ´å¤è¯å¥
}
ä¸ initialization
å䏿 ·ï¼condition
é¨å乿¯å¯éçã妿çç¥æ¤è¡¨è¾¾å¼ï¼åå¿
须确ä¿å¨ä¸»ä½å
æç ´å¾ªç¯ï¼ä»¥å
å建æ é循ç¯ã
for (let i = 0; ; i++) {
console.log(i);
if (i > 3) break;
// æ´å¤è¯å¥
}
ä½ ä¹å¯ä»¥å¿½ç¥ææç表达å¼ãåæ ·å°ï¼ç¡®ä¿ä½¿ç¨äº break
è¯å¥æ¥ç»æå¾ªç¯å¹¶ä¿®æ¹ï¼éå¢ï¼åéï¼ä½¿å¾ä¸æè¯å¥çæ¡ä»¶å¨æä¸ªæ¶å»ä¸ºçã
let i = 0;
for (;;) {
if (i > 3) break;
console.log(i);
i++;
}
ç¶èï¼å¦æä½ 没æå®å
¨ä½¿ç¨è¿ä¸ä¸ªè¡¨è¾¾å¼ï¼å°¤å
¶æ¯å¦æä½ 没æä½¿ç¨ç¬¬ä¸ä¸ªè¡¨è¾¾å¼å£°æåéï¼èæ¯å¨ä¸å±ä½ç¨åä¸ä¿®æ¹äºæä¸ªä¸è¥¿ï¼é£ä¹èèä½¿ç¨ while
循ç¯ï¼è¿æ ·å¯ä»¥æ´æ¸
æ°å°è¯´ææå¾ã
let i = 0;
while (i <= 3) {
console.log(i);
i++;
}
åå§ååä¸çè¯æ³å£°æ
å¨åå§ååä¸å£°æåéä¸å¨ä¸å±ä½ç¨åä¸å£°æå®æçéè¦çåºå«ï¼å°¤å ¶æ¯å¨å¾ªç¯ä½ä¸å建éå æ¶ãä¾å¦ï¼å¯¹äºä»¥ä¸ä»£ç ï¼
for (let i = 0; i < 3; i++) {
setTimeout(() => {
console.log(i);
}, 1000);
}
æ£å¦é¢æç飿 ·ï¼å®æå°äº 0
ã1
å 2
ã使¯ï¼å¦æå鿝å¨ä¸å±ä½ç¨åä¸å®ä¹çï¼
let i = 0;
for (; i < 3; i++) {
setTimeout(() => {
console.log(i);
}, 1000);
}
宿å°äº 3
ã3
å 3
ï¼å 为æ¯ä¸ª setTimeout
å建äºä¸ä¸ªæ°çéå
ï¼å®å¼ç¨äº i
åéï¼ä½æ¯å¦æ i
䏿¯å¾ªç¯ä½çå±é¨åéï¼é£ä¹ææçéå
é½ä¼å¼ç¨åä¸ä¸ªåéï¼å¹¶ä¸ç±äº setTimeout()
ç弿¥æ§è´¨ï¼å®å¯è½å¨å¾ªç¯å·²ç»éåºä¹åæè¢«è°ç¨ï¼å¯¼è´ææéåéçåè°å½æ°ç i
å¼é½è¢«è®¾ç½®ä¸º 3
ã
å¦æä½ ä½¿ç¨ var
è¯å¥æ¥åå§åï¼é£ä¹åé声æå°åªä½ç¨äºå½æ°ä½ç¨åï¼è䏿¯è¯æ³ä½ç¨åï¼å³å®ä¸ä¼å±éäºå¾ªç¯ä½ï¼ã
for (var i = 0; i < 3; i++) {
setTimeout(() => {
console.log(i);
}, 1000);
}
// æå° 3ã3ã3
åå§ååçä½ç¨åèå´å¯ä»¥ç解为声æåçå¨å¾ªç¯ä½å
é¨ï¼ä½å®é
ä¸åªè½å¨ condition
å afterthought
é¨åä¸è®¿é®ãæ´åç¡®å°è¯´ï¼let
å£°ææ¯ for
循ç¯ç¹æçââ妿 initialization
æ¯ let
声æï¼é£ä¹æ¯æ¬¡å¾ªç¯ä½æ§è¡å®æ¯åï¼é½ä¼åç以ä¸äºæ
ï¼
let
å£°ææ°çåéä¼å建ä¸ä¸ªæ°çè¯æ³ä½ç¨åãafterthought
卿°çä½ç¨å䏿§è¡ãå æ¤ï¼å¨ afterthought
ä¸éæ°åé
æ°åéä¸ä¼å½±åä¸ä¸æ¬¡è¿ä»£çç»å®ã
æ°çè¯æ³ä½ç¨åä¼å¨ initialization
ä¹åãcondition
ç¬¬ä¸æ¬¡è¢«å¤å®ä¹åå建ãè¿äºç»èå¯ä»¥éè¿å建éå
æ¥è§å¯å°ï¼éå
å
许å¨ä»»ä½ç¹å®ç¹è·åç»å®ãä¾å¦ï¼å¨ä»¥ä¸ä»£ç ä¸ï¼å¨ initialization
é¨åå建çéå
ä¸ä¼è¢« afterthought
ä¸ i
çéæ°åé
æ´æ°ï¼
for (let i = 0, getI = () => i; i < 3; i++) {
console.log(getI());
}
// æå° 0ã0ã0
è¿ä¸ä¼åå¨å¾ªç¯ä½ä¸å£°æ getI
ç飿 ·ï¼æå°â0ã1ã2âãè¿æ¯å 为 getI
卿¯æ¬¡è¿ä»£æ¶é½ä¸ä¼éæ°è®¡ç®ââç¸åï¼å®æ¯ä¸æ¬¡æ§å建çï¼å¹¶å¼ç¨äº i
åéï¼è¯¥å鿝å¨å¾ªç¯é¦æ¬¡åå§åæ¶å£°æçã对 i
çåç»æ´æ°å®é
ä¸ä¼å建æ°çåé i
ï¼è getI
å´çä¸å°ãä¿®å¤çæ¹æ³æ¯æ¯å½ i
æ´æ°æ¶éæ°è®¡ç® getI
ï¼
for (let i = 0, getI = () => i; i < 3; i++, getI = () => i) {
console.log(getI());
}
// æå° 0ã1ã2
initialization
å
é¨ç i
åé䏿¯æ¬¡è¿ä»£ä¸ç i
å鿝ä¸åçï¼å
æ¬ç¬¬ä¸æ¬¡ãå æ¤ï¼å¨è¿ä¸ªä¾åä¸ï¼getI
è¿å 0ï¼å³ä½¿å¨è¿ä»£ä¸ i
çå¼å·²ç»éå¢äºï¼
for (let i = 0, getI = () => i; i < 3; ) {
i++;
console.log(getI());
}
// æå° 0ã0ã0
å®é
ä¸ï¼ä½ å¯ä»¥æè· i
åéçåå§ç»å®ï¼å¹¶ç¨åéæ°åé
å®ï¼è¿æ ·æ´æ°çå¼ä¸ä¼å½±å循ç¯ä½ï¼å®åªè½çå°ä¸ä¸æ¬¡ç i
ç»å®ã
for (
let i = 0, getI = () => i, incrementI = () => i++;
getI() < 3;
incrementI()
) {
console.log(i);
}
// æå° 0ã0ã0
è¿ä¼æå°â0ã0ã0âï¼å 为 i
åé卿¯æ¬¡å¾ªç¯æ§è¡ä¸å®é
䏿¯ä¸ä¸ªåç¬çåéï¼ä½æ¯ getI
å incrementI
é½è¯»åååå
¥ i
çåå§ç»å®ï¼è䏿¯åæ¥å£°æçé£ä¸ªã
以ä¸ç for
循ç¯è®¡ç®äºä¸ä¸ªèç¹å¨ afterthought
é¨åçåç§»ä½ç½®ï¼å æ¤ä¸éè¦ä½¿ç¨ statement
é¨åï¼èæ¯ä½¿ç¨åå·ã
function showOffsetPos(id) {
let left = 0;
let top = 0;
for (
let itNode = document.getElementById(id); // initialization
itNode; // condition
left += itNode.offsetLeft,
top += itNode.offsetTop,
itNode = itNode.offsetParent // afterthought
); // åå·
console.log(
`â${id}âå
ç´ çåç§»ä½ç½®ï¼
左侧ï¼${left}pxï¼
é¡¶é¨ï¼${top}pxï¼`,
);
}
showOffsetPos("content");
// æå°ï¼
// âcontentâå
ç´ çåç§»ä½ç½®
// 左侧ï¼0pxï¼
// é¡¶é¨ï¼153pxï¼
注æï¼for
è¯å¥åé¢å¿
须使ç¨åå·ï¼å ä¸ºå®æ¯ä¸ä¸ªç©ºè¯å¥ãå¦åï¼for
è¯å¥å° console.log
è¡ä½ä¸º statement
é¨åï¼è¿ä¼å¯¼è´ log
被æ§è¡å¤æ¬¡ã
ä½ å¯ä»¥ä½¿ç¨éå·è¿ç®ç¬¦æ¥åå»ºä¸¤ä¸ªåæ¶æ´æ°ç计æ°å¨ãå¤ä¸ª let
å var
声æä¹å¯ä»¥ä½¿ç¨éå·è¿ç®ç¬¦è¿æ¥ã
const arr = [1, 2, 3, 4, 5, 6];
for (let l = 0, r = arr.length - 1; l < r; l++, r--) {
console.log(arr[l], arr[r]);
}
// 1 6
// 2 5
// 3 4
è§è æµè§å¨å
¼å®¹æ§ åè§
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