while
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015å¹´7æ.
while æã¯ããã¹ãæ¡ä»¶ãçã¨è©ä¾¡ããã¦ããéãæå®ãããæãå®è¡ããã«ã¼ãã使ãã¾ããæ¡ä»¶ã¯ãã®æãå®è¡ããåã«è©ä¾¡ããã¾ãã
試ãã¦ã¿ã¾ããã
let n = 0;
while (n < 3) {
n++;
}
console.log(n);
// äºæ³ãããçµæ: 3
æ§æ
while (condition)
statement
condition-
ã«ã¼ããééãããã¨ã«ããã®åã«è©ä¾¡ãããå¼ããã®æ¡ä»¶ãçã¨è©ä¾¡ãããå ´åã¯ã
statementãå®è¡ããã¾ããæ¡ä»¶ãå½ã¨è©ä¾¡ãããå ´åã¯ãå®è¡ã¯whileã«ã¼ãã®å¾ã®æã«ç¶ãã¾ãã statement-
æ¡ä»¶ãçã¨è©ä¾¡ãããéãå®è¡ãããæãè¤æ°ã®æãå®è¡ããã«ã¯ããããã¯æã使ç¨ãããã¨ãã§ãã¾ãã
解説
ä»ã®ã«ã¼ãæã¨åæ§ã«ãstatement ã®ä¸ã§ããã¼å¶å¾¡æã使ç¨ãããã¨ãã§ãã¾ãã
ä¾
>while ã®ä½¿ç¨
次㮠while ã«ã¼ãã¯ã n ã 3 ããå°ããéå復ãã¾ãã
let n = 0;
let x = 0;
while (n < 3) {
n++;
x += n;
}
ããããã®å復ã§ãã«ã¼ã㯠n ãå¢å ãããããã x ã«å ãã¾ãããããã£ã¦ã x ããã³ n ã¯æ¬¡ã®å¤ãã¨ãã¾ãã
- æåã®ééã®å¾:
n= 1 ããã³x= 1 - 2 åç®ã®ééã®å¾:
n= 2 ããã³x= 3 - 3 åç®ã®ééã®å¾:
n= 3 ããã³x= 6
3 åç®ã®ééãå®äºããå¾ãæ¡ä»¶ n < 3 ã¯çã§ã¯ãªããªããã«ã¼ãã¯çµäºãã¾ãã
ä»£å ¥ãæ¡ä»¶ã¨ãã¦ä½¿ç¨
å ´åã«ãã£ã¦ã¯ãä»£å ¥ãæ¡ä»¶ã¨ãã¦ä½¿ç¨ãããã¨ã«æå³ããããã¨ãããã¾ããããã¯èªã¿ãããã¨ãã¬ã¼ããªãã®é¢ä¿ã«ããã®ã§ããã®ãã¿ã¼ã³ã誰ã«ã§ãããããããããããã®ãããç¨®ã®æä½ä¸ã®æ¨å¥¨äºé ãããã¾ãã
次ã®ä¾ã¯ãææ¸ã®ã³ã¡ã³ããå復å¦çããã³ã³ã½ã¼ã«ã«ãã°åºåãããã®ã§ãã
const iterator = document.createNodeIterator(document, NodeFilter.SHOW_COMMENT);
let currentNode;
while (currentNode = iterator.nextNode()) {
console.log(currentNode.textContent.trim());
}
ããã¯å®å ¨ã«ããä¾ã¨ã¯è¨ãã¾ãããç¹ã«æ¬¡ã®è¡ãããããã§ãã
while (currentNode = iterator.nextNode()) {
ãã®è¡ã®åä½ã¯ãæ¯åã³ã¡ã³ããã¼ããå¾ãããã¨ããç¹ã§ã¯åé¡ããã¾ããã
iterator.nextNode()ãã³ã¡ã³ããã¼ããè¿ãããããcurrentNodeã«ä»£å ¥ããããcurrentNode = iterator.nextNode()ã®å¤ã¯ãå¾ã£ã¦çå¤ã¨ãªãã- ãã®ããã
console.log()ã®å¼ã³åºããå®è¡ããã«ã¼ããç¶ç¶ãããã
â¦ããã¦ãææ¸ä¸ã«ã³ã¡ã³ããã¼ãããªããªã£ãã¨ããæ¬¡ã®ããã«ãªãã¾ãã
iterator.nextNode()ã¯nullãè¿ãã- å¾ã£ã¦
currentNode = iterator.nextNode()ãnullã«ãªããããã¯å½å¤ã§ããã - ãã®ãããã«ã¼ããçµäºããã
ãã®è¡ã®åé¡ã¯ãæ¡ä»¶å¼ã«ã¯ãµã¤ãæ¯è¼æ¼ç®åãä¾ãã° === ã使ç¨ãããã®ã§ããããã®è¡ã® = ã¯æ¯è¼æ¼ç®åã§ã¯ãªãã代å
¥æ¼ç®åã§ãããã®ããã= 㯠=== ã®ééãã®ããã«è¦ãã¦ãã¾ãã¾ãï¼å®éã«ã¯ééãã§ã¯ãªãã¦ãï¼ã
å¾ã£ã¦ããã®ããã«ããã¨ãä¸é¨ã®ã³ã¼ããªã³ãã£ã³ã°ãã¼ã«ãä¾ãã° ESLint ã® no-cond-assign ã«ã¼ã«ãªã©ã¯ã誤è¨ã®å¯è½æ§ããããã®ãçºè¦ãã¦ä¿®æ£ããããããããã«ã以ä¸ã®ãããªè¦åãå ±åãã¾ãã
Expected a conditional expression and instead saw an assignment.ï¼æ¡ä»¶å¼ãæå¾ ãããã¨ããã«ä»£å ¥ãããã¾ãããï¼
å¤ãã®ã¹ã¿ã¤ã«ã¬ã¤ãã§ã¯ãæ¡ä»¶å¼ã«ä»£å ¥å¼ãæ¸ããã¨ãæå³çã§ãããã¨ããããæç¢ºã«ç¤ºããã¨ãæ¨å¥¨ãã¦ãã¾ãããããè¡ãããã®æå°éã®æ¹æ³ã¨ãã¦ãæ¬å¼§ãã°ã«ã¼ãåæ¼ç®åã¨ãã¦è¿½å ãã¦ä»£å ¥å¼ãå²ãæ¹æ³ãããã¾ãã
const iterator = document.createNodeIterator(document, NodeFilter.SHOW_COMMENT);
let currentNode;
while ((currentNode = iterator.nextNode())) {
console.log(currentNode.textContent.trim());
}
å®éããã㯠ESLint ã® no-cond-assign ã®æ¢å®å¤ã Prettier ã§å¼·å¶ããã¦ããã¹ã¿ã¤ã«ãªã®ã§ããã®ãã¿ã¼ã³ãããè¦ãããã§ãããã
æ¡ä»¶ãæç¤ºçãªæ¯è¼ã«å¤ããããã«æ¯è¼æ¼ç®åã追å ãããã¨ãå§ãã人ããã¾ãã
while ((currentNode = iterator.nextNode()) !== null) {
ãã®ãã¿ã¼ã³ã¯ä»ã«ãæ¸ãæ¹ãããã¾ãã
while ((currentNode = iterator.nextNode()) && currentNode) {
ãããã¯ãwhile ã«ã¼ãã使ç¨ããã¢ã¤ãã£ã¢ãå®å
¨ã«æ¾æ£ããæ¹æ³ãããã¾ãã
const iterator = document.createNodeIterator(document, NodeFilter.SHOW_COMMENT);
for (
let currentNode = iterator.nextNode();
currentNode;
currentNode = iterator.nextNode()
) {
console.log(currentNode.textContent.trim());
}
èªè ãæ¡ä»¶å¼ã®ãã¿ã¼ã³ã¨ãã¦ä»£å ¥å¼ãè¨è¿°ãããã¨ã«ååã«æ £ãã¦ããã°ããããã®èªã¿ãããã¯ãã¹ã¦åããããã®ã¯ãã§ããããã§ãªããã°ãæãåé·ã§ã¯ããã¾ãããæå¾ã®å½¢å¼ãæãèªã¿ãããã§ãããã
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-while-statement> |