ある日仕事でコードを読んでいたら以下みたいなコードがあり
{ foo: !!bar }
!!
って何?と思ったので調べてみました。
二重否定とは
複数の否定演算子を連続して使用することで、明示的にあらゆる値を対応する論理型プリミティブに変換することができます。
参考 mdn web docs
論理型プリミティブ…???
論理型プリミティブ
まずプリミティブとは
JavaScript において、プリミティブ (primitive、プリミティブ値、プリミティブデータ型) はオブジェクトでなく、メソッドを持たないデータのことです。 6 種類のプリミティブデータ型があります。
文字列
数値
長整数
論理値
undefined
シンボル
null
多くの場合、プリミティブ値は、その言語実装の最下層にて直接的に表現されます。
参考 mdn web docs
文字列だったり数値や論理値(真偽値)などオブジェクト以外をプリミティブ値と呼ぶという事がわかりました。
つまり、論理型プリミティブというのはtrue
かfalse
を表しています。
参考動画とコード
二重否定については以下の動画が分かりやすかったです。
動画の内容を真似してコードを書いてみました。
let myName = ""
const hisName = !!myName
console.log(hisName) //false
myName = "HANAKO"
const herName = !!myName
console.log(herName) //true
const herName2 = myName
console.log(herName2) //HANAKO
そして二重否定!!
はBoolean関数と同じ働きをしているという事も理解しました。
以下の記事も参考にして、少しずつですがまた一つJavaScriptに関して成長できた様な気がします。