| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「JavaScript」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の29版が非表示)
1行目: 1行目:
==JavaScript==
+
| [[Node.js]] | [[TypeScript]] | [[Angular]] |  [[AngularJS]] | [[React]] | [[Dojo]] | [[DOM]] | [[jQuery]] | [[prototype.js]] | [[初めてのJavaScript|初めて]] |
[[初めてのJavaScript] Node.js][AngularJS][React][Dojo][DOM][jQuery][prototype.js][[初めて]]
+
{{amazon|477418411X}}
==言語==
+
==[[JavaScript]]==
  
 +
==[[言語]]==
  
 +
==モダンJavaScript==
  
====let宣言子====
+
===変数宣言===
*ECMAScript6から導入
+
*const : 再代入不可
*ブロックスコープのローカル変数を宣言
+
*let : 変数宣言、ブロックスコープ、同名変数監視
 +
*var :  変数宣言
  
 +
===リテラル表現===
 +
====テンプレート文字列====
 +
*文字列をバッククォートでくくる
 +
*途中の改行も可
 +
<pre>
 +
const name = 'Yagi';
 +
const message = `Hello. ${name}`;
 +
</pre>
  
====const宣言子====
+
===アロー関数====
*ECMAScript6から導入
+
*関数リテラルをより簡単にあらわす
*ブロックスコープの再代入できないローカル変数(定数)を宣言する。
+
<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>
 +
&lt;script type="module" src="mod.js"&gt;&lt;/script&gt;
 +
</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]
====DHTML====
+
====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===
+
 
====ウィンドウ操作====
+
==[[Tips]]==
*[JavaScript ブラウザのタイトルを変更する] [ブラウザのタイトルを変更する]
+
===ウィンドウ操作===
*[JavaScript showModalDialog で開いたダイアログの画面遷移] [showModalDialog で開いたダイアログの画面遷移]
+
*[[JavaScript ブラウザのタイトルを変更する|ブラウザのタイトルを変更する]]
*[JavaScript 画面が閉じられる時にメッセージを表示する] [画面が閉じられる時にメッセージを表示する]
+
*[[JavaScript showModalDialog で開いたダイアログの画面遷移|showModalDialog で開いたダイアログの画面遷移]]
*[JavaScript 自動的にリダイレクトする] [自動的にリダイレクトする]
+
*[[JavaScript 画面が閉じられる時にメッセージを表示する|画面が閉じられる時にメッセージを表示する]]
*[JavaScript Windowのクライアント領域のサイズを取得] [Windowのクライアント領域のサイズを取得]
+
*[[JavaScript 自動的にリダイレクトする|自動的にリダイレクトする]]
*[JavaScript Windowが未だ開いているか] [Windowが未だ開いているか]
+
*[[JavaScript Windowのクライアント領域のサイズを取得|Windowのクライアント領域のサイズを取得]]
*[JavaSctipt 確認ダイアログなしでWindowを閉じる] [確認ダイアログなしでWindowを閉じる]
+
*[[JavaScript Windowが未だ開いているか|Windowが未だ開いているか]]
*[JavaScript デスクトップ領域のサイズを取得] [デスクトップ領域のサイズを取得]
+
*[[JavaSctipt 確認ダイアログなしでWindowを閉じる|確認ダイアログなしでWindowを閉じる]]
====画面要素====
+
*[[JavaScript デスクトップ領域のサイズを取得|デスクトップ領域のサイズを取得]]
*[JavaScript 行列を固定したテーブル] [行列を固定したテーブル]
+
===画面要素===
*[JavaScript 動的にコントロールを扱うとき] [動的にコントロールを扱うとき]
+
*[[JavaScript 行列を固定したテーブル|行列を固定したテーブル]]
*[JavaScript オブジェクトのメンバーを列挙] [オブジェクトのメンバーを列挙]
+
*[[JavaScript 動的にコントロールを扱うとき|動的にコントロールを扱うとき]]
*[JavaScript F5 キー押下を無効にする] [F5 キー押下を無効にする]
+
*[[JavaScript オブジェクトのメンバーを列挙|オブジェクトのメンバーを列挙]]
*[JavaScript イベントハンドラのアタッチ] [イベントハンドラのアタッチ]
+
*[[JavaScript F5 キー押下を無効にする|F5 キー押下を無効にする]]
*[JavaScript TABLEに行を追加] [TABLEに行を追加]
+
*[[JavaScript イベントハンドラのアタッチ|イベントハンドラのアタッチ]]
*[JavaScript テキストエリアの内容をクリップボードにコピー] [テキストエリアの内容をクリップボードにコピー]
+
*[[JavaScript TABLEに行を追加|TABLEに行を追加]]
*[JavaScript SELECT BOX の OnChange をキャンセルする] [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進数文字コードを取得] [16進数文字コードを取得]
+
*[[JavaSctipt 16進数文字コードを取得|16進数文字コードを取得]]
*[文字化けの対処] [文字化けの対処(URLエンコード)]
+
*[[文字化けの対処|文字化けの対処(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)のキーを取り出す] [連想配列(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====
+
===[[Ajax]]===
*[prototype.js HTMLとスクリプトを分離] [HTMLとスクリプトを分離]
+
*[[prototype.js HTMLとスクリプトを分離|HTMLとスクリプトを分離]]
*prototype.js
+
*[[prototype.js]]
*Dojo
+
*[[Dojo]]
  
====その他====
+
===[[その他]]===
*[JavaScript Script実行順を制御] [Script実行順を制御]
+
*[[JavaScript Script実行順を制御|Script実行順を制御]]
*クロージャ
+
*[[クロージャ]]
*Bookmarklet
+
*[[Bookmarklet]]
*JSEclipse
+
*[[JSEclipse]]
*ECMA Script
+
*[[ECMA Script]]
*Javascript 再入門
+
*[[Java]]script 再入門
  
----
+
[[category:プログラミング言語]]
{{include_html banner_html, "!Javascript"}}
 

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

ウィンドウ操作

画面要素

画像

スタイル

文字列操作

正規表現

配列

オブジェクト

トラブル

Ajax

その他