どうやって検索するかわからない? イケてる?? Javascript 書き方(構文)
どうやって検索するかわからない? イケてる?? Javascript 書き方(構文):
Javascrpt ってコード読んでて、え、何これ?どう意味?ってなっても検索していてもたどりつけないやつないですか?
そんな JS コードを思いついただけまとめてみました。もし他にもなにかあれば教えてください。
※ 下記コードは状況によって、保守性が落ちたり、可読性が下がったりする場合もあるので、これらは決してベターな書き方であるとは限りません。
obj.hoge などにアクセスしたときの
オブジェクトを期待する変数が空の場合も、id に空を代入できエラーを防ぐ。
サーバーサイドにあらわれる。
array.length が 0 は false 判定になるので、
この辺の array 関数と使う 参考:Hash maps without side effects
参考:【JavaScript】~を含むかのチェック
むしろ使わないほうが良いものもありますが、他人のコードを読む時の参考にしてください。
Javascrpt ってコード読んでて、え、何これ?どう意味?ってなっても検索していてもたどりつけないやつないですか?
そんな JS コードを思いついただけまとめてみました。もし他にもなにかあれば教えてください。
※ 下記コードは状況によって、保守性が落ちたり、可読性が下がったりする場合もあるので、これらは決してベターな書き方であるとは限りません。
省略編
ワンライナー(1行)で書ける場合は {}
中括弧が省略
if (i >= 100) document.writeln('iは100以上です。'); else document.writeln('iは100未満です。');
2行の場合でも {}
中括弧が省略
if (i >= 100) document.writeln('iは100以上です。');
while (i >= 100) document.writeln(`iは${i}です。`); i++;
ワンライナーで条件によって代入する値を変える (三項演算子)
const hoge = (i >= 100)? 'iは100以上です。' : 'iは100未満です。'
for 文を、ワンライナーで変数に代入
for(let i = 0, item; item = array[i++];)
初期化編
文字列が空の場合、デフォルト値を代入
const str = string || 'default'
オブジェクトがない場合、オブジェクトを代入
const obj = obj || {}
TypeError: Cannot read property 'hoge' of undefined
のエラーを防げる。
object が空の場合は, id に空を代入
const id = obj && obj.id
関数の引数にデフォルト値を代入
const func = (arg1='default1') => arg1
一気にデフォルト値を設定
const { w = 1200, h = 630 } = req.query || {}
?w=2400
のGETをなげるとすると、 w=2400; h=630
となる
変数同士の値交換 (多重代入)
const [x, y] = ['hoge', 'huga'];
複数変数に一度で代入
const [x, y]= ['hoge', 'huga']; x = [y,y = x][0];
配列が1つ以上ある場合の判別
const ary = array.length ? array.map(arg => doSomething(arg)) : []
array.length
のみで ok この辺の array 関数と使う 参考:Hash maps without side effects
func の型が function
の場合だけ func を実行
typeof func === 'function' && func()
演算子編
奇数の判別
if(i & 1) //2進数で判断させる
ビット演算子で文字列を含むかどうか判別
if(~arr.indexOf('hoge'))
型変換
文字列 Boolean
const s = "true"; const result = !!s; // ==> true
文字列 から 数値
const s = "10" const result = +s // ==> 10
小数 から 整数
const f = 12.34; const result = f | 0; // ==> 12
数値 から 文字列
const n = 10 const result = ''+ n // ==> "10"
コメント
コメントを投稿