好きな髪色は銀髪、プラチナ☆みゆきである。
さて、今回はフロントエンドとしてJavaScript、バックエンドとしてPythonを学ぶ人用にその基礎文法の違いをまとめてみた。
また、両者はどちらも動的型付けのスクリプト言語であるが、JavaScriptの場合はブラウザで動作し、Pythonの場合はターミナルで動作するという点で大きな違いがある。
変数宣言・代入
Python
x = 'hoge'
Pythonは変数の宣言と代入に特に区別がなく、変数作成時に宣言と代入を一緒に実行する。
また、変数と定数を内部的に区別せず、変数は小文字、定数は大文字で書くという記法のルールがあるくらいである。
JavaScript
let x;
x = 'hoge';
JavaScriptはまず、処理の終端に; を付ける必要がある。省略することも可能だが、付けるのが慣例となっている。
そして、変数宣言時に前にletもしくはvarを付けないとグローバル変数として宣言される。
定数の場合は前にconstを付ける。
また、宣言と代入を同時に実行し
let x = 'hoge';
としてあげることももちろん可能である。
制御フロー
Python
# if文
if x > 60:
print('good')
elif x > 80:
print('great')
else:
print('bad')
# for文
for i in range(3):
print(i)
Pythonは処理のブロックをインデント(字下げ)によって行い、インデントが正しくなければエラーが発生する。
JavaScript
// if文
if (x > 60) {
cosole.log('good');
} else if (x > 80) {
console.log('great');
} else {
console.log('bad');
}
// for文
for (let i=0; i<3; i++) {
console.log(i);
}
JSは処理のブロックを波括弧で表す。JavaScriptのJavaは、JavaのJavaではないが、JavaやC++などのサーバサイド言語も波括弧で処理のブロックを規定する。
例外処理
Python
try:
x / y
except as e:
print(e)
finally:
print('done')
JavaScript
try {
x / y;
} catch(e) {
console.log(e.message);
} finally {
console.log('done');
}
例外を捕捉する時にPythonではexceptだが、JSではcatchになるので注意。
配列
Python
li = [1,2,3]
print(li[1])
# 2
li.append(4)
# li = [1,2,3,4]
li.pop()
# li = [1,2,3]
li.pop(0)
# li = [2,3]
li.insert(0,1)
# li = [1,2,3]
# slice
li[1:3]
# [2,3]
JavaScript
let array = [1,2,3];
console.log(array[1]);
// 2
array.push(4);
// array = [1,2,3,4]
array.pop();
// array = [1,2,3]
array.shift();
// array = [2,3]
array.unshift(1);
// array = [1,2,3]
// slice
array.slice(1,3);
// [2,3]
細かい違いだが、Pythonでlistのインデックス外の値を指定するとIndexErrorが返ってくるが、JSではインスタンス外の値はundefinedが返ってきてエラーにはならない。
関数
Python
def somefunc():
print('')
JavaScript
function somefunc() {
cosole.log('');
};
クラス
Python
class Class:
def __init__(self, args):
self.args = args
def method(self):
print('')
instance = Class(1)
JavaScript
class Class {
constructor(args) {
this.args = args;
}
method() {
console.log('');
};
};
let instance = new Class(1);
JSではインスタンスの宣言時にnewが必要なので注意。また、インスタンス引数としてPythonではself, JSではthisを使用するが、Pythonのselfはユーザが明示的に指定する変数でありselfでなくても動作には影響がないのに対して、JSのthisは暗黙的に設定される変数であり予約語なのでユーザが任意に設定することはできない。
まとめ
JavaScriptは一番人気の言語だけあって、Pythonで書けることはほとんどJavaScriptでも書ける印象であった。
しかし、JavaScriptの方がオブジェクトの操作がデータ型によって書き方がバラバラであったり、少々覚えづらいものが多かったりしたように感じた。
JavaScriptの記法はnode.jsによってサーバサイドでも使われたり、BaaSであるFirebaseを使うにはnode.jsを書けないといけなかったりでサーバサイドでも扱わないわけにはいかないようになってきているので是非マスターしていきたいところである。