「JavaScript」の版間の差分
ナビゲーションに移動
検索に移動
(同じ利用者による、間の29版が非表示) | |||
1行目: | 1行目: | ||
− | + | | [[Node.js]] | [[TypeScript]] | [[Angular]] | [[AngularJS]] | [[React]] | [[Dojo]] | [[DOM]] | [[jQuery]] | [[prototype.js]] | [[初めてのJavaScript|初めて]] | | |
− | [[ | + | {{amazon|477418411X}} |
− | == | + | ==[[JavaScript]]== |
+ | ==[[言語]]== | ||
+ | ==モダンJavaScript== | ||
− | === | + | ===変数宣言=== |
− | * | + | *const : 再代入不可 |
− | * | + | *let : 変数宣言、ブロックスコープ、同名変数監視 |
+ | *var : 変数宣言 | ||
+ | ===リテラル表現=== | ||
+ | ====テンプレート文字列==== | ||
+ | *文字列をバッククォートでくくる | ||
+ | *途中の改行も可 | ||
+ | <pre> | ||
+ | const name = 'Yagi'; | ||
+ | const message = `Hello. ${name}`; | ||
+ | </pre> | ||
− | === | + | ===アロー関数==== |
− | * | + | *関数リテラルをより簡単にあらわす |
− | + | <pre> | |
− | + | (arg,・・・) => {statement} | |
+ | </pre> | ||
+ | *以下の2つは意味的にはほぼ等価 | ||
+ | <pre> | ||
+ | function fun(arg) { | ||
+ | return "x"; | ||
+ | } | ||
+ | const fun = (arg) => { | ||
+ | return "x"; | ||
+ | } | ||
+ | </pre> | ||
− | ==リンク== | + | *関数本体が1文ならブロックを省略できる |
+ | *式の値がそのまま戻り値となるのでreturnも省略できる | ||
+ | <pre> | ||
+ | const fun = (arg) => "x"; | ||
+ | </pre> | ||
+ | *引数が1つの場合、カッコも省略できる | ||
+ | <pre> | ||
+ | const fun = arg = > "x"; | ||
+ | </pre> | ||
+ | |||
+ | *引数がない場合、カッコは省略できない | ||
+ | <pre> | ||
+ | const fun = () => "x"; | ||
+ | </pre> | ||
+ | ===オブジェクトリテラルの簡易構文=== | ||
+ | |||
+ | ====変数と同名のプロパティ==== | ||
+ | *プロパティと変数名が等しい場合は、値の指定を省略できる | ||
+ | <pre> | ||
+ | const name = 'yagi' | ||
+ | const age = 52; | ||
+ | |||
+ | const me = { name, age }; | ||
+ | </pre> | ||
+ | |||
+ | ====メソッドの簡易構文==== | ||
+ | *メソッドも簡易に表せる。 | ||
+ | *greet : function() {} -> greet() {} | ||
+ | <pre> | ||
+ | const person = { | ||
+ | name : 'yagi', | ||
+ | greet() { | ||
+ | "Hello"; | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | ====プロパティ名の動的生成(算出プロパティ名)==== | ||
+ | *プロパティ名をブラケットで括ることで値から生成できる | ||
+ | <pre> | ||
+ | let i = 0; | ||
+ | const hoge = { | ||
+ | [`no${i++}`] : '#1', | ||
+ | [`no${i++}`] : '#2', | ||
+ | [`no${i++}`] : '#3' | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | ====分割代入==== | ||
+ | *配列 | ||
+ | <pre> | ||
+ | const list = [1,2,3]; | ||
+ | const [x,y,z] = list; | ||
+ | |||
+ | // 明示されない値を取得には...を使う | ||
+ | const [x, ...etc] = list; | ||
+ | </pre> | ||
+ | *オブジェクト | ||
+ | <pre> | ||
+ | const me = { | ||
+ | name = 'yagi'; | ||
+ | addr = 'aichi'; | ||
+ | age = 52; | ||
+ | }; | ||
+ | |||
+ | const { name, addr, note = 'default value' } = me; | ||
+ | // 別名 name -> myname | ||
+ | const { name: myname } = me; | ||
+ | // 明示されない値を取得には...を使う | ||
+ | const { name, ...etc } = me; | ||
+ | </pre> | ||
+ | |||
+ | *入れ子オブジェクト | ||
+ | <pre> | ||
+ | const me = { | ||
+ | name : 'yagi'; | ||
+ | addr : { | ||
+ | pref : 'aichi', | ||
+ | city: 'asahi' | ||
+ | } | ||
+ | }; | ||
+ | |||
+ | const { addr : { city } } = me; | ||
+ | // city = 'asahi' | ||
+ | </pre> | ||
+ | |||
+ | ====引数規定値、可変長引数==== | ||
+ | *引数規定値 | ||
+ | <pre> | ||
+ | function fun(a = 1, b = 1, c = 1) {} | ||
+ | |||
+ | // 以下も可 | ||
+ | function fun (a = 1, b = a, c = a ) {} | ||
+ | </pre> | ||
+ | |||
+ | *可変長引数:引数の前に...を付与することで配列として取得できる | ||
+ | <pre> | ||
+ | function fun(...nums) { | ||
+ | console.log(nums.length); | ||
+ | } | ||
+ | |||
+ | fun(1,2,3); // print 3 | ||
+ | </pre> | ||
+ | |||
+ | *スプレッド構文による引数の展開 | ||
+ | <pre> | ||
+ | console.log(...[1,2.3]); // 1,2,3 | ||
+ | </pre> | ||
+ | |||
+ | *分割代入によるオブジェクト引数の分解 | ||
+ | <pre> | ||
+ | const me = { name: 'yagi', age: 52 }; | ||
+ | const f = ({name, age}) => console.log(`${name}`); | ||
+ | f(me); // yagi | ||
+ | </pre> | ||
+ | ====nullチェック==== | ||
+ | *Optional Chaining演算子(?.) | ||
+ | <pre> | ||
+ | let str = null; | ||
+ | str?.substring(1); // undefined => 通常Error | ||
+ | </pre> | ||
+ | |||
+ | *null合体演算子 | ||
+ | <pre> | ||
+ | let str = null; | ||
+ | str ?? 'default value'; // default value | ||
+ | </pre> | ||
+ | ===モジュール=== | ||
+ | *JavaScriptのモジュールは一つのファイルとしてまとめるのが基本 | ||
+ | *モジュール配下のメンバーは規定でモジュール外部には非公開 | ||
+ | *モジュール外部からアクセスするには、exportキーワードを付与する必要がある | ||
+ | |||
+ | ====定義済みモジュールへのアクセス==== | ||
+ | <pre> | ||
+ | <script type="module" src="mod.js"></script> | ||
+ | </pre> | ||
+ | |||
+ | *import { member, ... } from module | ||
+ | <pre> | ||
+ | import { func1, func2 } from './mod.js'; | ||
+ | </pre> | ||
+ | |||
+ | *nodeコマンドから実行の場合、package.jsonで明示的にモジュール機能を有効化 | ||
+ | <pre> | ||
+ | { | ||
+ | "type": "module" | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | *その他 | ||
+ | <pre> | ||
+ | import { func1 as f1 } form './mod.js'; // 別名付与 | ||
+ | import * as md from './mod.js'; // as でモジュール別名を定義し全体をimport | ||
+ | import f1 from './mod.js'; // export default (モジュール1つにつき一つだけ設定できる規定のexport)をimport | ||
+ | import f1 {f2, f3} from './mod.js'; // 規定とその他をまとめてimport | ||
+ | </pre> | ||
+ | |||
+ | *動的import | ||
+ | 指定されたモジュールを非同期にimportし出来次第thenコールバックを実行 | ||
+ | <pre> | ||
+ | import('./mod.js').then)(md => { | ||
+ | md.f1(); | ||
+ | }); | ||
+ | </pre> | ||
+ | |||
+ | ==[[リンク]]== | ||
+ | ===Promiseベースのhttpクライアント(axios)=== | ||
+ | *https://github.com/axios/axios | ||
====リファレンス==== | ====リファレンス==== | ||
+ | *[https://jsprimer.net/ JavaScript Primer] | ||
*[https://developer.mozilla.org/ja/JavaScript Mozilla Developer Center JavaScript] | *[https://developer.mozilla.org/ja/JavaScript Mozilla Developer Center JavaScript] | ||
*[http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/js56jslrfJScriptLanguageReference.asp MSDN JScript] | *[http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/js56jslrfJScriptLanguageReference.asp MSDN JScript] | ||
− | ==== | + | ====D[[HTML]]==== |
*[http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpisdk/dhtml/references/objects/objects.asp MSDN DHTML] | *[http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpisdk/dhtml/references/objects/objects.asp MSDN DHTML] | ||
*[http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/dhtml_reference_entry.asp HTML and DHTML Reference] | *[http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/dhtml_reference_entry.asp HTML and DHTML Reference] | ||
===入門=== | ===入門=== | ||
− | ====初めてのJavaScript==== | + | ====[[初めてのJavaScript]]==== |
− | *初めてのJavaScript | + | *[[初めてのJavaScript]] |
− | ====JavaScript メモ==== | + | ====[[JavaScript メモ]]==== |
− | *JavaScript メモ | + | *[[JavaScript メモ]] |
− | ====DOM==== | + | ====[[DOM]]==== |
− | *DOM | + | *[[DOM]] |
− | ====jQuery==== | + | ====[[jQuery]]==== |
− | *jQuery | + | *[[jQuery]] |
− | == | + | |
− | + | ==[[Tips]]== | |
− | *[JavaScript ブラウザのタイトルを変更する] | + | ===ウィンドウ操作=== |
− | *[JavaScript showModalDialog で開いたダイアログの画面遷移 | + | *[[JavaScript ブラウザのタイトルを変更する|ブラウザのタイトルを変更する]] |
− | *[JavaScript 画面が閉じられる時にメッセージを表示する] | + | *[[JavaScript showModalDialog で開いたダイアログの画面遷移|showModalDialog で開いたダイアログの画面遷移]] |
− | *[JavaScript 自動的にリダイレクトする] | + | *[[JavaScript 画面が閉じられる時にメッセージを表示する|画面が閉じられる時にメッセージを表示する]] |
− | *[JavaScript Windowのクライアント領域のサイズを取得] | + | *[[JavaScript 自動的にリダイレクトする|自動的にリダイレクトする]] |
− | *[JavaScript Windowが未だ開いているか] | + | *[[JavaScript Windowのクライアント領域のサイズを取得|Windowのクライアント領域のサイズを取得]] |
− | *[JavaSctipt 確認ダイアログなしでWindowを閉じる] | + | *[[JavaScript Windowが未だ開いているか|Windowが未だ開いているか]] |
− | *[JavaScript デスクトップ領域のサイズを取得] | + | *[[JavaSctipt 確認ダイアログなしでWindowを閉じる|確認ダイアログなしでWindowを閉じる]] |
− | + | *[[JavaScript デスクトップ領域のサイズを取得|デスクトップ領域のサイズを取得]] | |
− | *[JavaScript 行列を固定したテーブル] | + | ===画面要素=== |
− | *[JavaScript 動的にコントロールを扱うとき] | + | *[[JavaScript 行列を固定したテーブル|行列を固定したテーブル]] |
− | *[JavaScript オブジェクトのメンバーを列挙] | + | *[[JavaScript 動的にコントロールを扱うとき|動的にコントロールを扱うとき]] |
− | *[JavaScript F5 キー押下を無効にする | + | *[[JavaScript オブジェクトのメンバーを列挙|オブジェクトのメンバーを列挙]] |
− | *[JavaScript イベントハンドラのアタッチ] | + | *[[JavaScript F5 キー押下を無効にする|F5 キー押下を無効にする]] |
− | *[JavaScript TABLEに行を追加] | + | *[[JavaScript イベントハンドラのアタッチ|イベントハンドラのアタッチ]] |
− | *[JavaScript テキストエリアの内容をクリップボードにコピー] | + | *[[JavaScript TABLEに行を追加|TABLEに行を追加]] |
− | *[JavaScript SELECT BOX の OnChange をキャンセルする | + | *[[JavaScript テキストエリアの内容をクリップボードにコピー|テキストエリアの内容をクリップボードにコピー]] |
− | + | *[[JavaScript SELECT BOX の OnChange をキャンセルする|SELECT BOX の OnChange をキャンセルする]] | |
− | *[JavaScript 画像の切替] | + | ===画像=== |
+ | *[[JavaScript 画像の切替|画像の切替]] | ||
− | + | ===スタイル=== | |
− | *[JavaScript 動的にスタイルクラスを変更する] | + | *[[JavaScript 動的にスタイルクラスを変更する|動的にスタイルクラスを変更する]] |
− | *[JavaScript 動的にスタイルシートの情報を取得する] | + | *[[JavaScript 動的にスタイルシートの情報を取得する|動的にスタイルシートの情報を取得する]] |
− | *[JavaScript インラインスタイルを無効にする] | + | *[[JavaScript インラインスタイルを無効にする|インラインスタイルを無効にする]] |
− | + | ===文字列操作=== | |
− | *[JavaScript シングルクォートのエスケープ] | + | *[[JavaScript シングルクォートのエスケープ|シングルクォートのエスケープ]] |
− | *画面に入力された文字コードを調べる | + | *[[画面に入力された文字コードを調べる]] |
− | *[JavaScript ゼロサプレス 正規表現 | + | *[[JavaScript ゼロサプレス 正規表現|ゼロサプレス 正規表現]] |
− | *[JavaSctipt 16進数文字コードを取得] | + | *[[JavaSctipt 16進数文字コードを取得|16進数文字コードを取得]] |
− | *[文字化けの対処 | + | *[[文字化けの対処|文字化けの対処(URLエンコード)]] |
*[JavaScript UTF-8文字列のバイト数を得る [UTF-8文字列のバイト数を得る] | *[JavaScript UTF-8文字列のバイト数を得る [UTF-8文字列のバイト数を得る] | ||
− | *[JavaScriptで全角半角変換] | + | *[[JavaScriptで全角半角変換|全角半角変換]] |
− | === | + | ===[[正規表現]]=== |
*[http://typea.info/tips/wiki.cgi?page=JavaScript+%C1%C8%A4%DF%B9%FE%A4%DF%A5%AA%A5%D6%A5%B8%A5%A7%A5%AF%A5%C8%28Number%2CString%2CRegExp%2CDate%2CMath%29#p4 JavaScriptでの正規表現] | *[http://typea.info/tips/wiki.cgi?page=JavaScript+%C1%C8%A4%DF%B9%FE%A4%DF%A5%AA%A5%D6%A5%B8%A5%A7%A5%AF%A5%C8%28Number%2CString%2CRegExp%2CDate%2CMath%29#p4 JavaScriptでの正規表現] | ||
− | + | ===配列=== | |
− | *[JavaScript 組み込みオブジェクト(配列)] | + | *[[JavaScript 組み込みオブジェクト(配列)|配列]] |
− | *[JavaScript 連想配列(Map)のキーを取り出す | + | *[[JavaScript 連想配列(Map)のキーを取り出す|連想配列(Map)のキーを取り出す]] |
− | *[JavaScript 配列の要素を削除] [ | + | *[[JavaScript 配列の要素を削除|配列の要素を削除]] |
+ | *[[JavaScript Array|配列でなければ配列に、配列ならそのまま(もしくは追加)]] | ||
− | + | ===オブジェクト=== | |
− | *[JavaScript オブジェクトが関数かどうか調べる] | + | *[[JavaScript オブジェクトが関数かどうか調べる|オブジェクトが関数かどうか調べる]] |
− | *[JavaScript オブジェクトのプロパティ確認] | + | *[[JavaScript オブジェクトのプロパティ確認|オブジェクトのプロパティ確認]] |
− | + | ===トラブル=== | |
− | *開放されたスクリプトからコードを実行できません | + | *[[開放されたスクリプトからコードを実行できません]] |
− | *IE6 のdocument.body.clientHeightの挙動がおかしい | + | *[[IE6 のdocument.body.clientHeightの挙動がおかしい]] |
− | *IE Input type=file でsubmitできない | + | *[[IE Input type=file でsubmitできない]] |
− | *ブラウザ用デバッグツール | + | *[[ブラウザ用デバッグツール]] |
− | === | + | ===[[Ajax]]=== |
− | *[prototype.js HTMLとスクリプトを分離] | + | *[[prototype.js HTMLとスクリプトを分離|HTMLとスクリプトを分離]] |
− | *prototype.js | + | *[[prototype.js]] |
− | *Dojo | + | *[[Dojo]] |
− | === | + | ===[[その他]]=== |
− | *[JavaScript Script実行順を制御] | + | *[[JavaScript Script実行順を制御|Script実行順を制御]] |
− | *クロージャ | + | *[[クロージャ]] |
− | *Bookmarklet | + | *[[Bookmarklet]] |
− | *JSEclipse | + | *[[JSEclipse]] |
− | *ECMA Script | + | *[[ECMA Script]] |
− | * | + | *[[Java]]script 再入門 |
− | + | [[category:プログラミング言語]] | |
− |
2024年9月27日 (金) 11:14時点における最新版
| Node.js | TypeScript | Angular | AngularJS | React | Dojo | DOM | jQuery | prototype.js | 初めて |
JavaScript
言語
モダンJavaScript
変数宣言
- const : 再代入不可
- let : 変数宣言、ブロックスコープ、同名変数監視
- var : 変数宣言
リテラル表現
テンプレート文字列
- 文字列をバッククォートでくくる
- 途中の改行も可
const name = 'Yagi'; const message = `Hello. ${name}`;
アロー関数=
- 関数リテラルをより簡単にあらわす
(arg,・・・) => {statement}
- 以下の2つは意味的にはほぼ等価
function fun(arg) { return "x"; } const fun = (arg) => { return "x"; }
- 関数本体が1文ならブロックを省略できる
- 式の値がそのまま戻り値となるのでreturnも省略できる
const fun = (arg) => "x";
- 引数が1つの場合、カッコも省略できる
const fun = arg = > "x";
- 引数がない場合、カッコは省略できない
const fun = () => "x";
オブジェクトリテラルの簡易構文
変数と同名のプロパティ
- プロパティと変数名が等しい場合は、値の指定を省略できる
const name = 'yagi' const age = 52; const me = { name, age };
メソッドの簡易構文
- メソッドも簡易に表せる。
- greet : function() {} -> greet() {}
const person = { name : 'yagi', greet() { "Hello"; } }
プロパティ名の動的生成(算出プロパティ名)
- プロパティ名をブラケットで括ることで値から生成できる
let i = 0; const hoge = { [`no${i++}`] : '#1', [`no${i++}`] : '#2', [`no${i++}`] : '#3' }
分割代入
- 配列
const list = [1,2,3]; const [x,y,z] = list; // 明示されない値を取得には...を使う const [x, ...etc] = list;
- オブジェクト
const me = { name = 'yagi'; addr = 'aichi'; age = 52; }; const { name, addr, note = 'default value' } = me; // 別名 name -> myname const { name: myname } = me; // 明示されない値を取得には...を使う const { name, ...etc } = me;
- 入れ子オブジェクト
const me = { name : 'yagi'; addr : { pref : 'aichi', city: 'asahi' } }; const { addr : { city } } = me; // city = 'asahi'
引数規定値、可変長引数
- 引数規定値
function fun(a = 1, b = 1, c = 1) {} // 以下も可 function fun (a = 1, b = a, c = a ) {}
- 可変長引数:引数の前に...を付与することで配列として取得できる
function fun(...nums) { console.log(nums.length); } fun(1,2,3); // print 3
- スプレッド構文による引数の展開
console.log(...[1,2.3]); // 1,2,3
- 分割代入によるオブジェクト引数の分解
const me = { name: 'yagi', age: 52 }; const f = ({name, age}) => console.log(`${name}`); f(me); // yagi
nullチェック
- Optional Chaining演算子(?.)
let str = null; str?.substring(1); // undefined => 通常Error
- null合体演算子
let str = null; str ?? 'default value'; // default value
モジュール
- JavaScriptのモジュールは一つのファイルとしてまとめるのが基本
- モジュール配下のメンバーは規定でモジュール外部には非公開
- モジュール外部からアクセスするには、exportキーワードを付与する必要がある
定義済みモジュールへのアクセス
<script type="module" src="mod.js"></script>
- import { member, ... } from module
import { func1, func2 } from './mod.js';
- nodeコマンドから実行の場合、package.jsonで明示的にモジュール機能を有効化
{ "type": "module" }
- その他
import { func1 as f1 } form './mod.js'; // 別名付与 import * as md from './mod.js'; // as でモジュール別名を定義し全体をimport import f1 from './mod.js'; // export default (モジュール1つにつき一つだけ設定できる規定のexport)をimport import f1 {f2, f3} from './mod.js'; // 規定とその他をまとめてimport
- 動的import
指定されたモジュールを非同期にimportし出来次第thenコールバックを実行
import('./mod.js').then)(md => { md.f1(); });
リンク
Promiseベースのhttpクライアント(axios)
リファレンス
DHTML
入門
初めてのJavaScript
JavaScript メモ
DOM
jQuery
Tips
ウィンドウ操作
- ブラウザのタイトルを変更する
- showModalDialog で開いたダイアログの画面遷移
- 画面が閉じられる時にメッセージを表示する
- 自動的にリダイレクトする
- Windowのクライアント領域のサイズを取得
- Windowが未だ開いているか
- 確認ダイアログなしでWindowを閉じる
- デスクトップ領域のサイズを取得
画面要素
- 行列を固定したテーブル
- 動的にコントロールを扱うとき
- オブジェクトのメンバーを列挙
- F5 キー押下を無効にする
- イベントハンドラのアタッチ
- TABLEに行を追加
- テキストエリアの内容をクリップボードにコピー
- SELECT BOX の OnChange をキャンセルする
画像
スタイル
文字列操作
- シングルクォートのエスケープ
- 画面に入力された文字コードを調べる
- ゼロサプレス 正規表現
- 16進数文字コードを取得
- 文字化けの対処(URLエンコード)
- [JavaScript UTF-8文字列のバイト数を得る [UTF-8文字列のバイト数を得る]
- 全角半角変換
正規表現
配列
オブジェクト
トラブル
- 開放されたスクリプトからコードを実行できません
- IE6 のdocument.body.clientHeightの挙動がおかしい
- IE Input type=file でsubmitできない
- ブラウザ用デバッグツール
Ajax
その他
© 2006 矢木浩人