Appearance
寰幆鎺у埗锛歜reak 涓?continue 鍦ㄥ悇寰幆涓殑琛ㄧ幇
闂鑳屾櫙
涓轰粈涔?break 鏈夋椂鏃犳硶姝g‘璺冲嚭寰幆锛熸湰涓婚鍒嗘瀽 break 鍜?continue 鍦?JavaScript 鍚勭寰幆涓殑琛屼负宸紓銆?
寰幆绫诲瀷瀵规瘮琛?
| 寰幆绫诲瀷 | break | continue | 璇存槑 |
|---|---|---|---|
for | 鉁?鏀寔 | 鉁?鏀寔 | 浼犵粺璁℃暟寰幆 |
while | 鉁?鏀寔 | 鉁?鏀寔 | 鍓嶇疆鏉′欢寰幆 |
do...while | 鉁?鏀寔 | 鉁?鏀寔 | 鍚庣疆鏉′欢寰幆 |
for...in | 鉁?鏀寔 | 鉁?鏀寔 | 閬嶅巻瀵硅薄鍙灇涓惧睘鎬? |
for...of | 鉁?鏀寔 | 鉁?鏀寔 | 閬嶅巻鍙凯浠e璞? |
forEach | 鉂?涓嶆敮鎸? | 鉂?涓嶆敮鎸? | 鏁扮粍鏂规硶 |
map/filter/reduce | 鉂?涓嶆敮鎸? | 鉂?涓嶆敮鎸? | 鏁扮粍鏂规硶 |
璇︾粏鍒嗘瀽
for 寰幆
javascript
// break 瀹屽叏鏀寔
for (let i = 0; i < 10; i++) {
if (i === 5) break;
console.log(i); // 0,1,2,3,4
}
// continue 瀹屽叏鏀寔
for (let i = 0; i < 5; i++) {
if (i === 2) continue;
console.log(i); // 0,1,3,4
}for...in 寰幆
javascript
const obj = { a: 1, b: 2, c: 3 };
// break 瀹屽叏鏀寔
for (const key in obj) {
if (key === 'b') break;
console.log(key, obj[key]); // a:1
}
// continue 瀹屽叏鏀寔
for (const key in obj) {
if (key === 'b') continue;
console.log(key, obj[key]); // a:1, c:3
}for...of 寰幆
javascript
const arr = [1, 2, 3, 4, 5];
// break 瀹屽叏鏀寔
for (const item of arr) {
if (item === 3) break;
console.log(item); // 1, 2
}
// continue 瀹屽叏鏀寔
for (const item of arr) {
if (item === 3) continue;
console.log(item); // 1, 2, 4, 5
}forEach锛堜笉鏀寔 break/continue锛?
javascript
const arr = [1, 2, 3, 4, 5];
// 鉂?鏃犳硶浣跨敤 break/continue
arr.forEach(item => {
if (item === 3) break; // 璇硶閿欒
});鏇夸唬鏂规锛?- 浣跨敤 for...of + break
- 浣跨敤
Array.some()杩斿洖true鍙仠姝?- 浣跨敤Array.find()鎵惧埌鍚庤嚜鍔ㄥ仠姝?
javascript
// 鏇夸唬 forEach + break
for (const item of arr) {
if (item === 3) break;
console.log(item); // 1, 2
}
// 浣跨敤 some 妯℃嫙 break
arr.some(item => {
if (item === 3) return true; // 鍋滄
console.log(item); // 1, 2
return false;
});宓屽寰幆涓殑 break
鍏抽敭鐐?*锛歚break` 鍙兘璺冲嚭鐩存帴鍖呭惈**鐨勯偅涓€灞傚惊鐜€?
javascript
// 鉂?break 鍙兘璺冲嚭鍐呭眰寰幆
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (j === 1) break; // 鍙烦鍑哄唴灞?j 寰幆
console.log(i, j);
}
}
// 杈撳嚭: (0,0), (1,0), (2,0)
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (i === 1) break; // 鍙烦鍑?i=1 鏃剁殑鍐呭眰寰幆
console.log(i, j);
}
}
// 杈撳嚭: (0,0),(0,1),(0,2), (2,0),(2,1),(2,2)璺冲嚭澶栧眰寰幆鐨勬柟娉?
javascript
// 鏂规硶 1锛氭爣璁帮紙涓嶆帹鑽愶級
outer: for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (j === 1) break outer; // 璺冲嚭澶栧眰寰幆
console.log(i, j);
}
}
// 杈撳嚭: (0,0)
// 鏂规硶 2锛氭彁鍙栦负鍑芥暟锛堟帹鑽愶級
function findPair() {
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (j === 1) return; // 鍑芥暟杩斿洖鍗宠烦鍑烘墍鏈夊惊鐜? console.log(i, j);
}
}
}
findPair();
// 杈撳嚭: (0,0)
// 鏂规硶 3锛氳缃爣蹇椾綅
let found = false;
for (let i = 0; i < 3 && !found; i++) {
for (let j = 0; j < 3; j++) {
if (j === 1) { found = true; break; }
console.log(i, j);
}
}
// 杈撳嚭: (0,0)for...in 鐨勭壒娈婃敞鎰忎簨椤?
1. key 鏄瓧绗︿覆涓嶆槸鏁板瓧
javascript
const arr = ['a', 'b', 'c'];
for (const i in arr) {
console.log(typeof i, i); // "string" "0", "1", "2"
}2. 浼氶亶鍘嗗師鍨嬮摼涓婄殑灞炴€?
javascript
const parent = { x: 1 };
const child = Object.create(parent);
child.y = 2;
child.z = 3;
for (const key in child) {
if (!Object.hasOwn(child, key)) continue;
console.log(key, child[key]); // y:2, z:3 (涓嶄細杈撳嚭 x:1)
}3. 涓嶄繚璇侀『搴?
javascript
// for...in 涓嶄繚璇佸睘鎬ч亶鍘嗛『搴?const obj = { b: 2, a: 1, c: 3 };
for (const key in obj) {
console.log(key, obj[key]); // 椤哄簭涓嶇‘瀹?}寰幆閫夋嫨鎸囧崡
| 鍦烘櫙 | 鎺ㄨ崘寰幆 | 鍘熷洜 |
|---|---|---|
| 璁℃暟寰幆 | for | 鎬ц兘鏈€濂? |
| 瀵硅薄灞炴€ч亶鍘? | for...in + hasOwnProperty | 鍞竴閫夋嫨 |
鏁扮粍閬嶅巻锛堥渶 break锛墊 for...of | 鏀寔 break/continue | |
鏁扮粍閬嶅巻锛堟棤闇€ break锛墊 forEach/map | 璇箟娓呮櫚 | |
| 鏌ユ壘鍏冪礌 | find/some | 鎵惧埌鍗冲仠 |
| 鏉′欢杩囨护 | filter | 鍘熺敓鏀寔 |
甯歌璇尯
璇尯 1锛氬湪 forEach 涓娇鐢?break
javascript
// 鉂?閿欒
[1, 2, 3].forEach(item => {
if (item === 2) break; // SyntaxError
});
// 鉁?姝g‘
for (const item of [1, 2, 3]) {
if (item === 2) break;
console.log(item);
}璇尯 2锛氭贩娣?for...in 鍜?for...of
javascript
const arr = ['a', 'b', 'c'];
// 鉂?for...in 閬嶅巻鐨勬槸绱㈠紩锛堝瓧绗︿覆锛?for (const index in arr) {
console.log(index, typeof index); // "0" string
}
// 鉁?for...of 閬嶅巻鐨勬槸鍊?for (const value of arr) {
console.log(value); // "a", "b", "c"
}璇尯 3锛氬湪宓屽寰幆涓湡鏈?break 璺冲嚭鎵€鏈夊眰
javascript
// 鉂?閿欒鐞嗚В
for (const outer of outers) {
for (const inner of inners) {
if (condition) break; // 鍙烦鍑?inner
}
}
// 鉁?濡傛灉闇€瑕佽烦鍑烘墍鏈夊眰锛屼娇鐢ㄦ爣璁版垨鍑芥暟杩斿洖鎬荤粨
break鍜?continue瀹屽叏鏀寔for/while/for...in/for...offorEach/map绛夋暟缁勬柟娉?**涓嶆敮鎸?*break/continuebreak鍦ㄥ祵濂楀惊鐜腑**鍙兘璺冲嚭鐩存帴鍖呭惈鐨勪竴灞?*for...in閬嶅巻閿紙瀛楃涓诧級涓斿寘鍚師鍨嬮摼灞炴€э紝闇€鐢?hasOwnProperty杩囨护