BLOG

Javascript変数について

Javascript変数について

ワードの意味など復習できるようにメモ
基礎大事。

宣言による機能の違い

タイプ 再宣言 再代入 スコープ 初期化
let 不可 可能 ブロック 不可
const 不可 不可 ブロック 不可
var 可能 可能 関数 undefined

暗黙的な型変換

変数が呼ばれた状況によって変数の型が自動的に変換されること

プログラミング言語による型宣言の違い

動的型付け言語

変数宣言時の型の宣言無し
変数を使用する状況によって変数の型が変更される

静的型付け言語

変数宣言時の方の宣言あり
変数を使用する状況によらず、常に同じ型を保持

比較演算子

厳格な等価性

a === b
型の比較あり

抽象的な等価性

a == b
型の比較なし
抽象的な等価性の場合はまずは暗黙的に型が変換されてその後に厳格な等価性で比較する

基本的には厳格な等価性で判定を行う。抽象的な等価性だと思わぬバグを生む可能性がある

falsyとtruthy

falsyな値

Booleanで真偽値に変換した場合にfalseになる値のこと

  • false
  • null
  • 0
  • undefined
  • 0n
  • Nan
  • ""

    それ以外はtruthy

データ型

文字列、数値などの異なる値の型をデータ型という

jsには8種類の型がある

プリミティブ型

  • String
  • Number
  • Boolean
  • Undefined
  • Null
  • Symbol
  • BigInt
  • immutable
    変数に値が格納される
    一度作成するとその値を変更することはできない

プリミティブ値のコピー

  • ‘hello’を変数aに代入し、その変数aを変数bに代入。その変数bに’bye’を代入した場合、メモリ空間にはaの参照する’hello’と変数bの参照する’bye’が独立して存在することになる
  • 変数a自体の参照先である値自体がコピーされている

プリミティブ型では値の比較をする

オブジェクト

オブジェクトには参照が保持される
値を変更することができる。このことをmutableと呼ぶ

オブジェクトのコピー

変数 aにprop:’hello’を代入、その変数aを変数bに代入し、変数bのpropに’bye’を代入すると、変数aの参照するpropの保持する値’hello’ は’bye’に変更される

分割代入

オブジェクトから特定のプロパティーを抽出して宣言を行う

オブジェクト型では参照の比較をする

オブジェクトは「名前(プロパティー)と値(バリュー)をペアで管理する入れ物」であるが、
オブジェクトは「名前(プロパティー)付きの参照を管理する入れ物」ともいえる