タイトルどおりの小ネタです。知ってる人には何を今さらって言われる気もしますが。
とある要件でconstで宣言された配列の中身を全部消してしまいたいことがありました。でもconstで宣言されてるのでnullを入れると当然Uncaught TypeError: Assignment to constant variable.
が出ます。
const a = ['hoge', 'fuga'] a = null // => Uncaught TypeError: Assignment to constant variable.
でもlengthに0をセットすると配列の中身が全部消せます。
const a = ['hoge', 'fuga'] console.log(a.length) // => 2 a.length = 0 console.log({a}) // => { a: [] }
これは便利。
ちなみにこの状態でlengthに5とか10とか入れると空のスロットが確保されます。
a.length = 5 console.log({a}) // =>{ a: [ <5 empty items> ] }
追記1
ところで、上記ではconsole.log()
で変数の中身を出力しているのですがここにも小ネタがあります。
通常、デバッグ目的で変数を出力して確認したい場合にconsole.log(a)
みたいにすることって多いと思います。
でも出力が増えてくるとコンソール上でどの出力がどの変数のものなのかわからなくなるってあるあるだと思います。そうするとconsole.log('a: ' + a)
みたいな感じで記述すること多いと思うのですがこれが簡単にできるのが以下の記述方法です。
console.log({変数名})
と書くともれなく、{変数名: 値}
って感じで出力されます。これも便利。
追記2
TwitterでArray.splice(0)
を実行することでも同じことができるって教えてもらいました。これも便利。