JavaScriptとJavaの関数(メソッド)の定義と呼び出しの違いをやさしく解説!

こんにちは。ゆうせいです。

「JavaScriptを触ってみたけど、Javaとなんか書き方が違う…」と戸惑っていませんか?

たしかに、JavaとJavaScriptは名前は似ているけど、関数の扱い方は大きく違います!

この記事では、JavaとJavaScriptの関数の「定義」と「呼び出し」の違いを徹底比較しながら、初心者にもわかりやすく解説していきます!


関数ってそもそもなに?

まずは用語の整理から。

  • Javaでは「メソッド」と呼ぶのが一般的。
  • JavaScriptでは「関数(function)」と呼ばれます。

どちらも、処理のまとまりを意味していて、呼び出すことでその中の処理を実行できます。


JavaとJavaScriptの関数定義の違い

Javaの場合(メソッド)

public class Main {
  public static void sayHello(String name) {
    System.out.println("こんにちは、" + name + "さん!");
  }

  public static void main(String[] args) {
    sayHello("ゆうせい");
  }
}
  • Javaではクラスの中で定義
  • 戻り値の型(voidなど)や引数の型が必須
  • static をつけることでインスタンス化なしで呼び出せる

JavaScriptの場合(関数)

function sayHello(name) {
  console.log("こんにちは、" + name + "さん!");
}

sayHello("ゆうせい");

  • クラスが不要
  • 戻り値や引数の型の指定が不要
  • 定義も呼び出しもシンプル

定義方法のバリエーション(JavaScriptのほうが多い!)

JavaScriptでは関数の書き方が3つ以上ある!

1. 関数宣言(function declaration)

function greet(name) {
  console.log("Hi, " + name);
}

2. 関数式(function expression)

const greet = function(name) {
  console.log("Hi, " + name);
};

3. アロー関数(arrow function)

const greet = (name) => {
  console.log("Hi, " + name);
};

これらはすべて同じように使えますが、扱いに違いがあるので注意が必要です(たとえば「巻き上げ(hoisting)」という動きの違いなど)。


呼び出し方の違い

Java(staticメソッド)

Main.sayHello("たろう");

Javaでは、クラス名を使って呼び出すか、インスタンスを作成して呼び出します。

Main m = new Main();
m.sayHello("はなこ");

JavaScript

sayHello("たろう");

とてもシンプルですね。クラスもインスタンスも必要ありません。

ただし、ES6(2015年)以降はJavaScriptにもクラス構文があり、Java風に書くこともできます。


戻り値の違い

Java

public static int add(int a, int b) {
  return a + b;
}

  • int などの型が必須
  • 戻り値を必ず返さなければならない

JavaScript

function add(a, b) {
  return a + b;
}

  • 戻り値の型は不要
  • 返さなくても構文エラーにはならない

表で比較しよう!

項目JavaJavaScript
定義場所クラスの中どこでもOK
戻り値の型必須不要
引数の型必須不要
呼び出し方法クラス名.メソッド or インスタンス関数名のみで呼び出せる
定義の種類1パターン(+ラムダ式)3種類以上(関数宣言・式・アロー関数)

まとめと学習のヒント

Javaは「厳格」、JavaScriptは「柔軟」

  • Javaは静的型付き(きちっと決まっている)
  • JavaScriptは動的型付き(ゆるくて自由)

この違いが、関数の定義や呼び出しにも表れています。

今後のステップ

  • JavaScriptでは「アロー関数」と「コールバック関数」の練習をしてみよう
  • JavaとJavaScriptの「オブジェクト指向」の違いにも注目していこう
  • 型が必要な場面には、TypeScriptを取り入れるとJavaに近い安心感が得られる!

何かピンと来ないところがあれば、遠慮なく質問してくださいね!一緒に整理していきましょう!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。