Javascript

【Javascript】配列の最初に要素を追加する。

unshiftメソッドを用いる。

['a', 'b', 'c'].unshift('e');
// e, a, b, c

unshiftは複数の要素を渡すことも可能。

 

【Javascript】morris.jsで手軽にリッチなグラフを作成する。

素晴らしいライブラリを見つけたのでペタリ。

http://morrisjs.github.io/morris.js/

詳細は公式見たほうがよいね。

 

【PHP/Javascript】switch(true)のイディオム。

switch文に関してかなり便利なイディオムを見つけたのでメモ。
switchの引数にtrueを渡しcase句で式を評価させることで、多分機のif elseif文をスッキリと記述することが出来る。

■PHPの場合

switch (true) {
	case $a == 1:
		break;
	case $a == 2:
		break;
	case $b == 5:
		break;
}

■Javascriptの場合

switch (true) {
	case x == 1:
		break;
	case x == 2:
		break;
	case x == 3:
		break;
}

どうやら賛否両論あるイディオムみたいだけど、breakをちゃんと書き忘れなければいいんじゃないかな。
と思う。

 

【Javascript】オブジェクトをjson文字列に変換する。

var json = {
    name: 'taro',
    age: 18
};
JSON.stringify(json);

 

【Javascript】日付フォーマット「Y-m-d」をサクッと表示させたい時のカンペ。

(new Date).getFullYear() + '-' + ((new Date).getMonth() + 1) + '-' + (new Date).getDate();

冷静にインスタンス生成しすぎ。
まぁ時間の無い現代人がサクッと欲しい時のコピペ用。

 

【Javascript】で変数名を動的に生成する。

eval()関数を用いると良い。

for(var i = 1; i <= 100; i++) {
	eval('var value_' + i + ';');
}

これでvalue_1?value_100までの変数が宣言されたことになる。
eval()は関数内の式を評価してくれるので、かなり動的な挙動を実装することが可能。
便利な反面注意も必要だね。

 

【Javascript】のstrictモードに関して。

Javascriptにはstrictモードというものが存在しているらしい。
strictモードを有効にするとより構文のチェックが厳しくなるので、今まで動作していたスクリプトでもエラーとなってしまう可能性がある。
非strictとの違いはざっと下記の通り。

非strict strict
宣言されていない変数への代入 グローバル変数が作成される エラー
書込み不可の変数への代入
書き込み不可プロパティへの代入
何も起きない エラー
削除不可のプロパティの削除 何も起きない エラー
プロパティ名の重複 最後に宣言したものがプロパティの値となる エラー
関数の引数名の重複 重複した引数がそれより前にある同名の引数を隠す エラー
8進数標記 8進数として処理される エラー

※さらなる詳細はscriptモードでググるべし。

Javascriptのソースコードの先頭行に下記を記述すると、strictモードになる。

'use strict';

※いかなる文字列よりも前に記述していなければならないので注意。

また特定の関数内部のみに適用することも可能。

function hoge() {
	'use strict';
	console.log('hoge');
}

的な感じ。

厳密にJSを書きたい時とかに便利だね。

 

【Javascript】指定した要素の計算済みのCSSスタイルを取得する。

めも。

// CSSの値を取得する。
getComputedStyle(element, '')
// CSSフォーマットで記述されたテキストを取得する。
getComputedStyle(element, '').cssText

これめっちゃ便利。