[JavaScript 33概念]2.Primitive Type(オリジナルデータ型、オリジナルタイプ)


Primitive Types



JavaScriptでは、元のタイプ(primitive datatype)はオブジェクトではなく、メソッドを持たないデータ型です.string、number、bigint、boolean、undefined、symbol、nullの7種類の元のタイプがあります.

All primitives are immutable


元のタイプは変わりません.これは、元のタイプ値に割り当てられた変数は変更できませんが、元のタイプ値自体はオブジェクト、配列、または関数で変更できません.
// 문자열 메소드는 문자열을 변경하지 않는다.
var bar = "baz";
console.log(bar);               // baz
bar.toUpperCase();
console.log(bar);               // baz

// 배열 메소드는 배열 값을 변경한다.
var foo = [];
console.log(foo);               // []
foo.push("plugh");
console.log(foo);               // ["plugh"]

// 할당(assignment)은 원시 값을 변형하는 것이 아닌 새로운 값을 부여한다.
bar = bar.toUpperCase();       // BAZ

null


nullは値がないことを示します.したがってnullとして指定された変数は存在しない値として定義されるといえる.
var x = null;
console.log( x ); // null 출력
nullとして指定された変数にはobjectタイプがあります.
console.log(typeof x); // object

undefined


変数を宣言した後に値を指定しない場合は、その変数にundefinedを指定します.
var x;
console.log(x); // undefined
console.log( typeof x); // undefined
console.log(y); // ReferenceError
console.log( typeof y); // undefined

number


JavaScriptはIEE-754形式で整数と浮動小数点を表します.
var x = 10;
var f = 10.5;
var f1 = 0.34;
number値が浮動小数点で表される整数値である場合、JavaScriptは浮動小数点ではなく整数と見なします.
JavaScriptは、浮動小数点数が整数の約2倍のメモリを使用するため、常により少ないメモリを使用して計算されます.
var fp = 10.00; // 10.00을 정수 10으로 취급

string


stringタイプは、0文字以上の文字からなる文字列です.'''またはbacktic文字で開始および終了します.
var helloMessage = "Hello";
var message = "let me know";

boolean


ブール値はtrueまたはfalseです.
var isDay = true;
var isNight = false;
console.log( typeof isDay);// boolean
console.log(typeof isNight);// boolean
他のタイプをブールに変換できます.
console.log(Boolean(‘JavaScript’)); // true console.log(Boolean(‘A’)); // true
console.log(Boolean(‘’)); // false
console.log(Boolean(10)); // true
console.log(Boolean(0)); // false
console.log(Boolean(Infinity)); // true console.log(Boolean({‘A’:1})); //true (빈 객체가 아닐경우 true)
console.log(Boolean(null)); // false

symbol


SymbolはES 6に追加された元のタイプです.Symbolは関数で生成でき、呼び出すたびに一意の値が生成されます.
console.log(symbol() == symbol() ); // false

const a1 = Symbol(‘debug’);
const a2 = ‘debug’;
const a3 = Symbol(‘xy’);
console.log(a1==a2);// false
console.log(a1==a3); // false
console.log(a1);// Symbol(debug)
主に他の値と同じ文字列を作成し、他の値と競合しないようにします.
const change = Symbol(‘change’);

bigint


bigintは、数値データ型をArbitrary-precision算術整数として表すことができるタイプである.

Auto-boxing


元のタイプにはメソッドやプログラムはありません.しかし、次のコードは正常に動作しています.
const name = "Doggo"
const age = 7

console.log(typeof name) // string
console.log(typeof age) // number

console.log(name.length) // 5
console.log(age.toString()) // "7"
JavaScriptが元のタイプのメソッドまたはプログラムにアクセスしようとするたびに、元のタイプはオブジェクト(object)としてパッケージされます.これを自動運転といいます.オートテッセレーションは、元のタイプに関連付けられたプロトタイプオブジェクトを元のタイプに関連付けることで、対応するプロトタイプメソッドとプロトタイプにアクセスできます.
Reference
  • Primitive, Non-Primitive Data Types in JavaScript | Examples
  • Primitive
  • Do you know what 📦 Autoboxing in JS is?