JavaScript単語

ジャバスクリプト

JavaScript(ジャバスクリプト)はスクリプト言語の一種。Webブラウザ上で動作させるためのスクリプトとして誕生した。

現在ECMAScriptが正式名称らしいが、その名を知る者は少ない。

概要

ニコニコ動画など、近年のWebサービスは見栄えや操作性を上げるためにJavaScriptを多用する傾向にある。JavaScriptに対応していない、または機を制限しているブラウザでそのようなページを閲覧する場合、制作者の意図した表示・動作にならないことがある。

プログラミング言語であるJavaとは名前が似ているため間違われやすく、また本屋などではJavaコーナーにJavaScript関連本が置かれていたりするが、実は全く別の言である。JavaScriptがNetscape Navigatorに搭載された当初はLiveScriptという名前だったが、当時Netscape Communications(現AOL)Sun Microsystems(現Oracle)と技術提携しており、アプレットというWebブラウザ上でJavaプログラムを動かす形態で当時人気だったJavaあやかってJavaScriptという名前に変更したらしい。

なお、JavaScriptは現在ではECMAScriptとして標準化された言の一般的な呼称である。ECMAScript実装例として、他にInternetExplorerJScriptやAdobe FlashActionScriptなどがある。

2000年前半まではスクリプト言語というチープ感やセキュリティ問題等であまり好まれていない言であったが、2005年googleマップ話題となり、Ajaxという名称がつけられた頃から、同期通信を可にするツールとして一気に注が集まった。

また2008年頃からWebデザインダイナミックな動きを与えるライブラリとしてjQuery世界的な人気となり、単にシステムだけでなく、デザインインターフェースはたまたPHPRailsにおけるAjax通信においても欠かせない言となった。

今日ではスマホが普及したことでWEBアプリ用用途としてJavaScript及びそれを発展させたフレームワークライブラリが開発に欠かせないものとなっており、”何でもできる”、から、更に速さと軽さというフットワークへの要に応えたものとなっている。そんな中で特に知られているのが、Facebookが開発し、JSXの記述方法に則ったコンポーネントライブラリであるReactGoogleが開発したAngularJSの開発メンバーが、より発展的なライブラリへと仕上げたVue.js世界的な注の的となっている。また、JavaScriptフレームワークとしてはAngularJSの欠点を発展的に解消させたらもはや別物となったAngular、軽さが売りのBackboneJSなどがある。

サンプルコード

Hello, World!

ブックマークレット

アドレスバーコピペで実行できる。新しくブックマークを作り、URLの代わりにこれを入すればいつでも呼び出せる(ブックマークレットと呼ばれる所以)。ニコニコ動画ハッキング系の動画でたまに見かける「javascript:」で始まる呪文がこれ。

javascript: alert("Hello, World!");

オブジェクト指向的な書き方

まずsomethingコンストラクタを作る。これはインスタンスnameプロパティを作り、仮引数nameの値を代入するというもの。次にsomethingコンストラクタのprototypeプロパティにhelloメソッドを追加。これはインスタンスnameプロパティを参照し、その前後に「Hello, 」と「!」をくっつけてダイアログに表示させるというもの。そして実際にworldという名前でsomethingコンストラクタのインスタンスを作る。この時の引数は'World'。最後にworldオブジェクトからhelloメソッドを呼ぶ。

function something(name) {
this.name = name;
}
something.prototype = {
hello: function() {
alert('Hello, ' + this.name + '!');
}
};
var world = new something('World');
world.hello();

ブラウザ以外の用途

ブラウザ以外ではアプリケーション用のスクリプト言語として使われている例がいくつもあり、特にAdobe製品ではほとんどの製品でJavaScriptによる拡や自動化ができるようになっている。

サーバーサイドでは1990年代後半から様々な製品やプロジェクトが存在しており、いずれも普及しているとはとてもいえない状態だったのだが、現在Node.jsが注を集めており、サーバーサイドJavaScript環境が個人の趣味レベルえる状態にはなっている。

またRDBの利点を多少をつぶることでその問題点をした非リレーショナルデータベースデータ形式にJSONを採用し、SQLの代わりにJavaScriptで問い合わせる形態のデータベースがいくつか登場している。

関連用語

NicoScript (ニワン語
戀塚昭彦氏の示でJavaScriptに似せて作られた。(日経ソフトウェア2008年5月号より)
Greasemonkey
Mozilla Firefoxのアドイン。JavaScriptを用いてウェブサイトを拡する。
ActionScript
Flashで使用される言。JavaScript(ECMAScript)を拡したもの。
TypeScript
MicrosoftがJavaScriptの上位互換として静的型付けにしたもの。

関連商品

関連項目

【スポンサーリンク】

スマホ版URL:
https://dic.nicovideo.jp/t/a/javascript

この記事の掲示板に最近描かれたお絵カキコ

お絵カキコがありません

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

JavaScript

66 ななしのよっしん
2017/11/23(木) 02:29:50 ID: rePvE9AFBv
いやぁ、Electronは画期的でしたね……
67 ななしのよっしん
2018/01/20(土) 01:12:06 ID: ATt83zLnh1
Java8や9の変わりようも凄いが、
JavaScriptも最近の仕様はもはや別言と言って差し支えない有様
そのうえAltJSとやらもある上にCSSHTML仕様がじゃんじゃん追加
フロントエンジニアは本当ご苦労様ですわ
68 ななしのよっしん
2018/04/15(日) 21:10:51 ID: bcujKFLMG2
Mozillaが「WebAssembly Studio」発表。C/Rust/AssemblyScript対応のオンラインIDE
http://www.publickey1.jp/blog/18/mozillawebassembly_studiocrustassemblyscriptide.htmlexit

JavaScriptを拡して静的型付けを可にしたTypeScriptを制約してWebAssemblyへ事前コンパイルにしたAssemblyScript・・・だと?
69 ななしのよっしん
2018/04/16(月) 10:51:25 ID: bcujKFLMG2
Go言WebAssemblyをサポートへ。GOARCHは「wasm」、GOOSは「js」に
http://www.publickey1.jp/blog/18/gowebassemblygoarchwasmgoosjs.htmlexit
>Go言サポートするOSCPUの種類をそれぞれ「GOOS」と「GOARCH」の値で示しています。例えばWindowsGOOS値は「windows
>今回のWebAssemblyでは、GOOSがJavaScriptの実行環境を表す「js」、GOARCHがWebAssemblyの正式な省略形である「wasm」となりました。

JSOSだった・・・?GO is GOD
70 ななしのよっしん
2018/06/02(土) 15:57:38 ID: mzGLoSYriM
>>61
"古いJS観の人間に限って、プロトタイプベースオブジェクト指向であるといった、
古くからのコアの基本事項すら理解していないことが多い。"

ほんとこれ
オブジェクト指向=クラスベース」という考えを持ったPGガチで多い
あとプロトタイプベース自体が大規模開発に向かないというのも理解してない

しかしクラスベースのように振る舞うJSさんサイドにも問題がある
何もかもnewが悪い!(極論)
71 ななしのよっしん
2018/10/20(土) 21:41:57 ID: JVELjqwIC4
>>61
>>70
最近趣味プログラミング始めたけど、初心者一人でやるとその「環境構築」が凄い難しいんですよ…
Visual Studioも「インストールは出来るけど使い方がやっぱ解んない」ってなりがちだし
JSは極論メモ帳があればいけるからとっつきやすいですねー
72 ななしのよっしん
2019/02/25(月) 23:48:31 ID: V6TCrueVue
ES6以降から、アロー関数クラスなどが導入されたので TypeScriptみたいに書くことができます。

class Something {
constructor(name) {
this.name = name;
}
hello() {
alert('hello,' + this.name);
}
}

const world = new Something('world!');
(省略しています。全て読むにはこのリンクをクリック!)
73 ななしのよっしん
2019/03/26(火) 23:33:21 ID: jNbYigiygU
>>70
役に立つのはクラスであって、クラスと切り離す場合オブジェクト指向ぶっちゃけ役に立たんから
74 ななしのよっしん
2019/07/01(月) 07:37:00 ID: 0Ger9dj8cw
JavaScript個人情報漏洩とかそんな感じの話前あった気がするが何だったか思い出せない
75 ななしのよっしん
2019/07/27(土) 05:30:47 ID: eIpHF1zazK
JSショートハンドきもちいい

急上昇ワード