どうやって検索するかわからない? イケてる?? Javascript 書き方(構文)

どうやって検索するかわからない? イケてる?? 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 || {} 
obj.hoge などにアクセスしたときの TypeError: Cannot read property 'hoge' of undefined のエラーを防げる。


object が空の場合は, id に空を代入

const id = obj && obj.id 
オブジェクトを期待する変数が空の場合も、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 が 0 は false 判定になるので、array.length のみで ok

この辺の array 関数と使う 参考:Hash maps without side effects


func の型が function の場合だけ func を実行

typeof func === 'function' && func() 


演算子編


奇数の判別

if(i & 1) //2進数で判断させる 


ビット演算子で文字列を含むかどうか判別

if(~arr.indexOf('hoge')) 
参考:【JavaScript】~を含むかのチェック


型変換


文字列 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"  
むしろ使わないほうが良いものもありますが、他人のコードを読む時の参考にしてください。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)