Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8691

セミコロンのつけ忘れを、JSはどこまで許してくれるのかを試してみた

$
0
0

はじめに

IT初心者の私ですが、普段はJavaScript, Node.js(以下JS)を使った開発をしています。
ここ数日、Javaを学び直そうとしているのですが、とにかくセミコロンをつけ忘れてはコンパイラに怒られています。

「JSなら実行してくれるのに・・」

むしろ逆にJavaScriptがセミコロンのつけ忘れに寛容すぎるのでは?

そのような背景もあり、JavaScriptがどこまでセミコロンのつけ忘れを許してくれるのかを、簡単に検証してみました。

この記事でわかること

  • JSだとOKだけどJava先生は怒る状態はどういうものか
  • JSが怒らないセミコロンのつけ忘れのギリギリのライン

実行環境

  • Java : paiza.io (openjdk version "15" 2020-09-15)
  • JS : paiza.io(Node.js v12.18.3)

Javaで怒られたソースコード

まずこちらがJava学習中に怒られた案件です。

importjava.util.*;importjava.util.ArrayList;publicclassMain{publicstaticvoidmain(String[]args)throwsException{// Your code here!List<Integer>names=newArrayList<Integer>();names.add(1);names.add(2);System.out.println(names.get(0));System.out.println(names.get(1))// ここのセミコロンつけ忘れで怒ってる}}// Main.java:12: error: ';' expected//        System.out.println(names.get(1))//1 error

「後ろに何も処理書いてないんだからいいじゃん!セミコロンなしでも分かってくれよ~!わかるだろ~!?」と、
セミコロンを忘れがちな私は思うわけです。
実際JSでは、後ろに処理がなければ実行できる(できてしまう)のだし。

実際JSだとどこまで許されるのか

consta="hoge";console.log(a);// hoge
consta="hoge";console.log(a)// hoge
consta="hoge"console.log(a)// hoge
consta="hoge"console.log(a)// SyntaxError: Unexpected identifier
consta=("hoge");console.log(a)//hoge

セミコロンがなくとも、最悪改行さえしていれば実行できるようですね。
そしてこれはJavaも同様ですが、セミコロンで区切りさえすれば問題なく実行できます。

おわりに

これらの仕様に対して、良し悪しの解釈は人により分かれると思いますが、
「実行できる」とはいえ、私はセミコロンを書き込む癖をつけようと感じました。


Viewing all articles
Browse latest Browse all 8691

Trending Articles