一文讀懂 JavaScript 和 Python 九大語義區別

csdn 發佈 2020-02-25T21:47:24+00:00

x= range # 1,2,3,4x = rangefor n in x:printfor n in x:print(n) # 2,4,6,8,10,12,14,16,18以上就是我注意到的最基本的JavaScript和Python之間的語義區別。

作者 | Ruqayyah Sara

譯者 | 彎月,責編 | 伍杏玲

出品 | CSDN(ID:CSDNnews)

我是一名全棧開發。前幾天我一直在研究算法和數據結構,因為對於程式設計師而言,最重要能力的就是解決問題,所有任何程式設計師都應該擁有強大的解決問題的基礎能力。

兩天前我開始學習Python,開始對這門語言有了更多的理解。我開始將其與JavaScript進行比較,因為JavaScript是我日常工作中使用的語言。

JavaScript和Python是兩門非常重要的語言。儘管包括我在內的許多人都知道Python或JavaScript,但我們並不清楚兩種語言之間的重要區別。

我注意到這兩門年語言有許多語義上的區別,相信理解這些區別對我和對其他人都有很大幫助。在本文中,我會比較我在兩門語言中遇到的一些基礎概念。所以,如果你熟悉JavaScript或Python,想了解二者的差異,那麼你就來對地方了!

注釋

JavaScript

使用雙斜線(//)作為單行注釋,/* */ 作為多行注釋。

Python

使用 # 作為單行注釋,使用三引號""" """ 作為多行注釋。

代碼塊

JavaScript

JavaScript中的每個代碼塊都必須放在花括號({})中,每條語句必須使用分號 ; 結束。

var a = 2;
if(a>0){
console.log("Positive");
}
else{
console.log("Negative");
}

Python

Python中的代碼塊使用縮進表示。它不使用花括號或圓括號,而是使用空白。每條語句都需要換行。


a = 2
if a>0:
print("Positive")
else:
print("negative")
print("does not belong to else block")

數據類型

我無法在本文中完整地討論JavaScript和Python之間的數據類型差異,這裡我們只討論主要的差異。

基本數據類型

  • 上面的表格展示了JavaScript和Python的基本數據類型。JavaScript中的Number類型表示Int和float值,由編譯器在運行時確定。而JavaScript(ES10)中的BigInt用於存儲大整數,而Python使用Int表示所有尺寸的整數。

  • JS使用關鍵字表示空值,Python使用None。

  • Python沒有undefined和symbol的概念,這些是JavaScript特有的。

  • Python有一種特殊的數據類型——complex,用於表示複數 x + yj,其中x是實部,y是虛部。

a=3+4j
print(a.real) #3
print(a.imag) #4

非基本數據類型

  • 上圖展示了複雜的(或者叫做非基本)數據類型。Python中的列表能存儲任何數據類型,與JavaScript一樣。

  • 但是Python中的數組可以使用庫(如NumPy,array)來定義。Python中的數組只能包含統一數據類型。Python中的列表和數組有很大區別。數組上可以執行多種數學操作,而列表不能。

  • JavaScript中的對象類似於Python中的字典。兩者都包含鍵值對。但對象是JavaScript中的基本組成部分,而字典在Python中只不過是個數據容器。

  • Python中的元組是一個不可修改的列表。用元組表示的列表無法被重新定義。而JavaScript沒有這個概念。

  • 因此,Python擁有內置的哈希表(字典),而JavaScript沒有內置的哈希表、方法或庫。

變量定義

JavaScript

在JavaScript中定義變量需要使用三種主要的關鍵字:var,let和const。定義方法決定了變量的使用方式(以及作用域)。

Python

Python中定義變量不需要使用關鍵字,只需要給變量名直接賦值即可:

a = 3
print (a) # 3

If-Else

JavaScript

JavaScript中的條件語句是 if、else if、else還有switch。

Python

Python中的條件語句是if、elif和else。

elif是else-if的縮寫。Python沒有switch語句。相反,可以用字典來代替。

三元運算符

JavaScript

JavaScript的三元運算符(?:)是一個條件運算符,語法為(condition)?(expresssionIfTrue):(expressionIfFalse):

var age = 26;
var beverage = (age >= 21) ? "Beer" : "Juice";
console.log(beverage); // "Beer"

Python

Python中的三元運算符的語法是 (expressionIfTrue) if (condition) else (expressionIfFalse)


a, b = 10, 20
min = a if a < b else b
print(min)

全等運算符

JavaScript

全等運算符(===)也叫「嚴格相等運算符」,會比較兩個運算數並檢查其相等性,而不會進行類型轉換,也就是說,它會檢查運算數的數據類型。返回值為布爾。JavaScript只有一個全等運算符。

var a=3,b="3";
console.log(a==b); // true
console.log(a===b); // false

Python

Python有兩個全等運算符:is 和 is not。

is 運算符會測試兩個運算數是否為同一個對象,is not為is的反面。


x = 5
if (type(x) is int):
print ("true") # true
if ( type(x) is not int):
print ("true")

成員運算符

JavaScript

成員運算符檢查對象中的特定屬性。JavaScript只有一個成員運算符:in。

const user= {name: 'Sara', age: 19, sex: "female"};
console.log('name' in car);
// output: true

Python

成員運算符用於驗證某個值是否為成員。Python有兩個成員運算符:in和not in。


x = 24
y = 20
list = [10, 20, 30, 40, 50 ]
if ( x not in list ):
print ("not present") # Output:True

循環

JavaScript

JavaScript有三種循環:

  • 入口控制循環:for和while(在執行循環語句之前測試條件)

  • 出口控制循環:do-while(執行循環語句之後測試條件)

// for loop
var c = ["red", "green", "blue", "purple"];
for (var i = 0; i<4; i++){
console.log(c[i]);
}
// prints array// while
var c = ["red", "green", "blue", "purple"];
while(i<4){
console.log(c[i]);
i++;
} // prints array

Python

Python有兩種循環:for和while。Python沒有內置的do-while循環。

Python的while循環與JavaScript的for循環類似。例如下面的例子:

c = ["red", "green", "blue", "purple"]
i = 0
while i<4:
print(c[i])
i += 1 # i++ is invalid

Python不支持++和--運算符。我們需要使用x+=1和x-=1。

for循環用來遍歷序列(列表、數組和元組)。它使用in操作符和range函數進行疊代。可以用range生成一系列數字,該函數接受三個參數:start,stop和step。

  • start:開始的位置(可選)。默認為0。

  • stop:結束的位置(必須指定)。

  • step:指定序列中兩個數字之間的間隔(可選)。

x = range(5)
for n in x:
print(n) # 1,2,3,4x = range(3,9)
for n in x:
print(n) # 3,4,5,6,7,8x = range(2,20,2)
for n in x:
print(n) # 2,4,6,8,10,12,14,16,18

以上就是我注意到的最基本的JavaScript和Python之間的語義區別。

原文連結:https://medium.com/better-programming/semantic-differences-between-javascript-and-python-ed21b1f3ce50

本文為 CSDN 翻譯,轉載請註明來源出處。

關鍵字: