【雑談】JScript って JavaScript と違うの?

JScriptとの出会い(大げさw)

 たっきぃです。わたしが『JScript』という言葉を気にしだしたのは、SAKURA Editorを使って文字列編集やらバッチ処理やら書いてた頃(今も使ってますが)、マクロのヘルプに『WSHマクロ(JScrpt/VBScript等)』の欄があるのを見てからになります。『WSH』ってなんじゃ? 『VBScript』と並べて書いてあるけど、『JScrpt』 って『JavaScript』の誤記と違うの?って思ったのがきっかけです。

 JScript について人に聞くとJavaScriptの本を渡され、軽く調べるとJScript もJavaScript もこんなものというのは出てくるのですが、ほぼ同じ内容でやっぱり誤表記なのか?という疑問がずっと解消されないままでした。MicrosoftのサイトでWSHについて調べたときも、技術文書独特の言い回しに馴染めなかったので、内容理解に到りませんでした。

 月日は流れ勤めていた会社を辞めたのを機に、学生気分で 辞書片手に英文を訳すがごとく、本腰を入れて理解に努めることにしました。

で、結論。JScript はマイクロソフト製のJavaScript。

 わかりやすく、一言でかたずけるならズバリ、これ。

 MSDocsのJScriptの概要によると、『 JScript は、Microsoft による ECMA 262 規格仕様の言語 (ECMAScript Edition 3) です。』とあります。納得しました。

Microsoft Windows スクリプト テクノロジの『JScript の概要』

https://docs.microsoft.com/ja-jp/previous-versions/windows/scripting/cc391896(v%253dmsdn.10)

 JScript と JavaScript をそれぞれ単体で特徴だけ調べても差がないのは当然ですね。HTML内に埋め込んでクライアントサイドで動かしたり、ASPに組み込んでサーバーサイドで動かしたり出来るのは共通なので。当時、具体的に何ができないかという観点から 互いに比較しあったりしたものが無かったので、同じものにしか見えなかったわけです。

 軽く解説すると、ECMAScript(エクマスクリプト)とは、JavaScriptの標準規格で、毎年仕様改定されています。そして、6th editionから「ECMAScript 2015」のように仕様の名称に発行年が付加されることになりました。ちなみに例ですが『ECMAScript 6th edition』を略して『ES6』と呼ばれたりします。

 先に述べた通り、『 JScript はECMA 262 規格仕様の言語 (ECMAScript Edition 3) 』であるということは、

JScript は JavaScript ES3 相当のスクリプト言語

ということです。

 ECMAScript Edition 3 の特徴とその後の追加仕様についてはここが詳しい上に解かり易いです。

原始時代のJavaScriptとオブジェクト指向(ES3)

https://qiita.com/uhyo/items/ab8e273e1eb71d02e29a#原始時代のjavascriptとオブジェクト指向es3

 お待たせしました。ここからが本題です。JavaScript はプロトタイプベースのオブジェクト指向スクリプト言語です。つまり、JScript もプロトタイプベースのオブジェクト指向スクリプト言語ということになります。

 HTML に埋め込んでJavaScript と同じ使い方をするならJScript と JavaScript は 同じ物だと言っていいでしょう。と言うかJScript のつもりでもコードが同じになるので JavaScript で解釈されているでしょうね。

 では違いは何かと言うと

JScript は WSH によりバッチ処理が可能

 ということでしょう。但しWindows限定ですが。WSH とJScript の全てはここを見ればこと足ります。

Microsoft Windows スクリプト テクノロジ

https://docs.microsoft.com/ja-jp/previous-versions/windows/scripting/cc392483(v%253dmsdn.10)

 node.jsを使っとけ?まぁその通りなんですが。

 未だWindowsを使い続けている身としては OS に標準搭載の WSH ってお手軽なんですよね。Windowsに始めからインストールされているので色々制限された社内PCでも、メモ帳で作ったバッチ処理のスクリプトが 動かせてしまうのは大きいと思います。

 PowerShell? あれはコマンドレットが長くて打ち間違え易いし、管理者権限で有効化しないと使えませんよ? Windowsアップデートしても新機能がサポートされない?.net は勝手にダウンロード&インストールして システムを重くするからあんまり好きません。最近は.net をプラットフォームにしたプログラムばかりでWindows = .net みたいになってますが、積極的に使ってやる気が起きないです。

 ということでWSH とJScript。既に次世代へ移行済みの技術ですが、便利な筈なのに何故か情報が少ない不遇さに惹かれるのです。(捻くれ者)


この記事が気に入ったらサポートをしてみませんか?