16
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

お題は不問!Qiita Engineer Festa 2023で記事投稿!

二重否定について調べました

Last updated at Posted at 2023-06-14

ある日仕事でコードを読んでいたら以下みたいなコードがあり

 { foo: !!bar }

!!って何?と思ったので調べてみました。

二重否定とは

複数の否定演算子を連続して使用することで、明示的にあらゆる値を対応する論理型プリミティブに変換することができます。

参考 mdn web docs

論理型プリミティブ…???

論理型プリミティブ

まずプリミティブとは

JavaScript において、プリミティブ (primitive、プリミティブ値、プリミティブデータ型) はオブジェクトでなく、メソッドを持たないデータのことです。 6 種類のプリミティブデータ型があります。
文字列
数値
長整数
論理値
undefined
シンボル
null
多くの場合、プリミティブ値は、その言語実装の最下層にて直接的に表現されます。

参考 mdn web docs

文字列だったり数値や論理値(真偽値)などオブジェクト以外をプリミティブ値と呼ぶという事がわかりました。
つまり、論理型プリミティブというのはtruefalseを表しています。

参考動画とコード

二重否定については以下の動画が分かりやすかったです。

動画の内容を真似してコードを書いてみました。

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に関して成長できた様な気がします。

16
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?