RubyとJavaScriptの基本的な文法
RubyとJavaScriptを学習したので、
基本的な文法を復習していこうと思います。
変数の宣言
Rubyでは変数名だけ、JavaScriptでは、変数はvar、let、またはconstキーワードを使用して宣言します。
なお、varの使用は推奨されていません。
name = "Taro"
age = 20
let name = "Taro";
const age = 20;
条件分岐
Rubyでは、if、elsif、elseを使用し、endで終了します。
JavaScriptでは、if、else if、elseを使用し、波括弧{}でブロックを示します。
if age >= 18
puts "You are an adult."
elsif age >= 13
puts "You are a teenager."
else
puts "You are a child."
end
if (age >= 18) {
console.log("You are an adult.");
} else if (age >= 13) {
console.log("You are a teenager.");
} else {
console.log("You are a child.");
}
ループ
RubyもJavaScriptもforを使用できます。
for i in 1..5
puts i
end
for (let i = 1; i <= 5; i++) {
console.log(i);
}
関数・メソッド
Rubyでは関数を通常「メソッド」と呼びます。
JavaScriptでは関数を通常「関数」と呼びます。
Rubyではdefを使用してメソッドを定義します。
JavaScriptではfunctionを使用して関数を定義します。また、アロー関数の形式もよく使用されます。
def greet(name)
"Hello, #{name}!"
end
function greet(name) {
return `Hello, ${name}!`;
}
const greet = (name) => `Hello, ${name}!`;
オブジェクト
Rubyはクラスベースのオブジェクト指向言語です。新しいクラスを定義するためにはclassを使用します。定義されたクラスをインスタンス化したものがオブジェクトです。
JavaScriptはプロトタイプベースのオブジェクト指向言語です。プロトタイプはオブジェクトが他のオブジェクトからプロパティ(データやメソッド)を継承するための仕組みです。
大まかなイメージとして、オブジェクトを設計図として新しいオブジェクト生成できるといったイメージです。なお、プロトタイプベースのオブジェクト指向において設計図という表現は適切ではないので、あくまで大まかなイメージだということにご留意ください。
class Person
def initialize(name, age)
@name = name
@age = age
end
def greet
puts "Hello, my name is #{@name}"
end
end
taro = Person.new("Taro", 20)
taro.greet # "Hello, my name is Taro"
let obj = {
name: "Taro",
age: 20
};
function Person(name, age) {
this.name = name;
this.age = age;
}
let taro = new Person("Taro", 20);
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
let taro = new Person("Taro", 20);
例外処理
Rubyではbegin、rescue、ensure、endを用いて例外処理をします。
JavaScriptではtry、catch、finallyを用いて例外処理をします。
begin
# 何かしらの処理
rescue => e
puts e.message
ensure
# 必ず実行したい処理
end
try {
// 何かしらの処理
} catch (e) {
console.log(e.message);
} finally {
// 必ず実行したい処理
}
【補足】プロトタイプについて
プロトタイプはオブジェクトが他のオブジェクトからプロパティを継承するための仕組みです。JavaScriptでは、あるオブジェクトは他の「プロトタイプオブジェクト」からプロパティを継承することができます。JavaScriptのすべてのオブジェクトは、何らかの他のオブジェクトをプロトタイプとして持っており、そのプロトタイプからプロパティやメソッドを継承します。
例えば、"dog"というオブジェクトを作り、その中に"bark"というメソッドを作リます。
そして、新たに"poodle"というオブジェクトを作るとします。
let dog = {
bark: function() {
console.log("Bowwow!");
}
}
let poodle = Object.create(dog);
この例では、"poodle"オブジェクトは"dog"オブジェクトをプロトタイプとして持ちます。つまり、"poodle"オブジェクトは"dog"オブジェクトから"bark"メソッドを使用することができます。
poodle.bark(); // Bowwow!
Discussion