首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java、Python、JavaScript、jQuery 迴圈語句完整對比:語法差異、效能特性與最佳實踐

     編輯:Java 相關知識

四大語言迴圈語句總覽

語言迴圈類型特色
Javawhile, do-while, for, for-each強型別、編譯期優化、支援標籤跳轉
Pythonfor, while迭代器協議、else 子句、列表推導式
JavaScriptwhile, do-while, for, for-in, for-of動態型別、非阻塞事件循環、陣列方法鏈
jQuery.each()DOM/JQ 物件遍歷、回調函數風格

Java 迴圈詳細語法

while / do-while

// while:先判斷後執行
while (condition) { /* body */ }

// do-while:至少執行一次
do { /* body */ } while (condition);

for 迴圈(三段式)

for (init; condition; update) { /* body */ }

// 範例:陣列遍歷
int[] arr = {1,2,3,4};
for (int i=0; i

for-each (增強 for)

for (int element : arr) {
    System.out.println(element);
}

// Map 遍歷
for (Map.Entry entry : map.entrySet()) {
    System.out.println(entry.getKey() + "=" + entry.getValue());
}

迴圈控制

  • break:跳出當前層迴圈
  • continue:跳過本次迭代,進入下一次
  • 標籤跳轉:outer: for(...) { inner: for(...) { break outer; } }

Python 迴圈詳細語法

for 迴圈(迭代器協議)

# 基礎遍歷
li = [1,2,3,4]
for i in li:
    print(i)

# 索引+值
for idx, val in enumerate(li):
    print(idx, val)
for idx, val in enumerate(li, start=1): # 索引從 1 開始
    print(idx, val)

# 多列表並行
li1 = [1,2,3]; li2 = [4,5,6]
for a, b in zip(li1, li2):
    print(a, b)

# 字典遍歷
dic = {'a':1, 'b':2}
for k in dic: print(k)              # 只遍歷 key
for k in dic.keys(): print(k)       # 明確 keys()
for v in dic.values(): print(v)     # 只遍歷 value
for k, v in dic.items(): print(k, v) # key-value 對

while 迴圈

# 基礎
i = 1
while i:
    pass  # i 非零即 True

# 無限迴圈
while True:
    pass

# 通用條件
while condition:
    pass

# Python 無 do-while,模擬寫法:
while True:
    # body
    if not condition:
        break

Python 獨特:for-else / while-else

for i in range(3):
    print(i)
else:
    print("迴圈正常結束(未 break)")

# 若迴圈中 break,else 不執行
for i in range(3):
    if i == 1: break
    print(i)
else:
    print("不會輸出")

列表推導式(Pythonic 寫法)

# 替代簡單 for 迴圈
squares = [x**2 for x in range(10)]
evens = [x for x in range(10) if x % 2 == 0]
pairs = [(x, y) for x in range(3) for y in range(3)]

JavaScript 迴圈詳細語法

while / do-while

var count = 0;
while (count < 10) {
    console.log(count);
    count++;
}

do {
    console.log("至少一次");
} while (false);

for 迴圈(C 風格)

var children = document.getElementById('k1').children;
for (var i=0; i

for-in(枚舉物件屬性/陣列索引)

var inputs = document.getElementById('i1').getElementsByTagName('input');
for (var i in inputs) {
    // i 是字串索引 "0", "1"...
    if (inputs[i].checked) inputs[i].checked = false;
    else inputs[i].checked = true; // 反選 checkbox
}

for-of (ES6,遍歷可迭代物件值)

var arr = [1,2,3];
for (var val of arr) {
    console.log(val); // 直接是值,非索引
}

// Map/Set 遍歷
var map = new Map([['a',1],['b',2]]);
for (var [k, v] of map) {
    console.log(k, v);
}

jQuery .each() 迴圈

// 選取器集合遍歷
$('input:text').each(function(index, element) {
    console.log(index, $(this).val());
    // this 是原生 DOM 元素
});

// 陣列/物件遍歷
$.each([1,2,3], function(idx, val) {
    console.log(idx, val);
});

$.each({a:1, b:2}, function(key, val) {
    console.log(key, val);
});

jQuery 迴圈控制

  • return true:相當 continue,進入下一次迭代
  • return false:相當 break,跳出 .each()

效能與最佳實踐對比

場景JavaPythonJavaScriptjQuery
陣列遍歷for-each / 索引 forfor-in / enumeratefor-of / forEach()$.each()
大數據量平行流 .parallelStream()生成器/itertoolsfor 迴圈最快避免,用原生
DOM 遍歷N/AN/AquerySelectorAll + for-of$(selector).each()
非同步迭代CompletableFutureasync for (3.8+)for await...ofPromise.all + map

跨語言遷移注意事項

差異點JavaPythonJavaScript
變數作用域區塊級函數級函數級 / 區塊級
迴圈變數洩漏無有var 有,let/const 無
break/continue 範圍支援標籤僅當前層支援標籤
else 子句無有無
編譯期優化JIT 編譯解釋執行JIT (V8 等)

現代替代方案建議

  • Java:Stream API list.stream().filter().map().collect()
  • Python:生成器表達式 (x for x in items if cond)、itertools
  • JavaScript:陣列函數式方法 map/filter/reduce/forEach、for await...of
  • jQuery:原生 NodeList.forEach()、Array.from(nodes).forEach()
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved