JavaScriptの学習・参考リファレンス/ドキュメント

JavaScript、ECMAScriptの学習と参考メモ 入門~初心者~中級者~上級者を目指して

基本型とリテラル

JavaScriptで定義されている基本的なデータ型とリテラル表現について解説します。

プリミティブ (primitive)な型

JavaScriptではメソッドを持たない基本的なデータ型として、 7種類のデータ型が定義されています。 (nullは正確にはobject型です)

意味 説明 値、リテラルの例
undefined 未定義 値が未定義 undefined
null null値 参照が存在しないか無効 null
boolean 真偽値 条件分岐等で使われる真偽値 true , false
number 数値 整数または浮動小数 1 , 1.2
bigint 長整数 任意精度の整数 123456789n
string 文字列 連続した文字 ‘Hello’ , “123”
symbol シンボル 一意のインスタンス Symbol(‘Sym’)

プリミティブ型は変更できません(イミュータブル immutable)。 変数に新しい値として代入することはできますが、 例えば1という数字で示される値そのものの変更は行えません。

リテラルの表現

プリミティブ型、および、その他型の値は、コード中に直接記載して表現する事ができます。

未定義

let a = undefined;

NULL値

let a = null;

真偽値

let a = true;
let b = false;

数値

16進数は先頭に0x、8進数は先頭に0,2進数は先頭に0bを付与します。

console.log(0x0, 0x1, 0xFF, -0x10);  // 16進数  0, 1, 255, -16
console.log(0, 1, -1, 100, 1.2); // 10進数  0, 1, -1, 100, 1.2
console.log(00, 07, 010, -077); // 8進数  0, 7, 8, -63
console.log(0o0, 0o7, 0o10, -0o77); // 8進数  0, 7, 8, -63
console.log(0b0, 0b1, 0b0011 , -0b11); // 2進数  0, 1, 3, -3

長整数

console.log(0x123456789ABCDEFn); // 16進数  81985529216486895n
console.log(123456789n); // 10進数  123456789n
console.log(0b101n); // 2進数  5n

浮動小数点

console.log(1.0, -1.1, -1.2E+5, .023e-5); // 1, -1.1, -120000, 2.3e-7

文字列

let a = 'Hello';
let b = "123";
let c = `test ${a} ${b}`;
let d = `AAA
BBBB
CCC`;
let e = 'a"b\rc\r\nd\te\\fg'

シンボル

let a = Symbol()
let b = Symbol(123)
let c = Symbol('Hello')

配列(Array)

角括弧[]を使って配列を作成できます。 角括弧の中に配列の要素をカンマ,で区切って列挙して表現します。

let a = [1, 2, 3, ];
let b = ['a', 'b', 'c', ];

末尾のカンマは省略できます。

オブジェクト(Object)

let a = {};
let b = { fullName:'Taro', age:40, name : { fist : 'taro', last : 'yamada' }  };
let c = { ['prop'+'1'] : 1 , [((n)=> 'prop_' + n )(2)] : 2  } ; //{prop1: 1, prop_2: 2}

正規表現

let r = /a*b+c/;
console.log(r.test("abc")); // true
console.log(r.test("abbbc")); // true

プリミティブ型(primitive)のラッパーオブジェクト

JavaScriptにはプリミティブ型を値として持つラッパーオブジェクトが用意されています。

プリミティブの値についてメソッドの呼び出しやプロパティの参照を行うと、 プリミティブのラッパーオブジェクトのメソッドやプロパティの呼び出しが行われます。

String 文字列

let primitive = 'abc'; // primitive
let wrapper1 = String('abc'); // primitive
let wrapper2 = new String('abc'); // wrapper object

console.log(typeof primitive); // string
console.log(typeof wrapper1); // string
console.log(typeof wrapper2); // object
console.log(primitive == wrapper1); // true
console.log(primitive === wrapper1);  // true
console.log(primitive == wrapper2); // true
console.log(primitive === wrapper2); //false
console.log(primitive === wrapper1.valueOf()); // true
console.log(primitive === wrapper2.valueOf()); // true

Number 数値

let primitive = 123; // primitive
let wrapper1 = Number(123); // primitive
let wrapper2 = new Number(123); // wrapper object

console.log(typeof primitive); // number
console.log(typeof wrapper1); // number
console.log(typeof wrapper2); // object
console.log(primitive == wrapper1); // true
console.log(primitive === wrapper1);  // true
console.log(primitive == wrapper2); // true
console.log(primitive === wrapper2); //false
console.log(primitive === wrapper1.valueOf()); // true
console.log(primitive === wrapper2.valueOf()); // true

BigInt 巨大整数

let primitive = 123n; // primitive
let wrapper1 = BigInt(123n); // primitive

console.log(typeof primitive); // bigint
console.log(typeof wrapper1); // bigint
console.log(primitive == wrapper1); // true
console.log(primitive === wrapper1);  // true
console.log(primitive === wrapper1.valueOf()); // true

Boolean 真偽値

let primitive = true // primitive
let wrapper1 = Boolean(true); // primitive
let wrapper2 = new Boolean(true); // wrapper object

console.log(typeof primitive); // boolean
console.log(typeof wrapper1); // boolean
console.log(typeof wrapper2); // object
console.log(primitive == wrapper1); // true
console.log(primitive === wrapper1);  // true
console.log(primitive == wrapper2); // true
console.log(primitive === wrapper2); //false
console.log(primitive === wrapper1.valueOf()); // true
console.log(primitive === wrapper2.valueOf()); // true
作成日 : 2020年06月11日