jinzhe

jinzhe

github
email

javascriptのタイプ

数字#

数値は整数と浮動小数点数に分けられ、10 進数、8 進数、16 進数、科学的表記法を使用して表されます。

var a = 1
var b = 1.1
var c = 067
var d = 0xA
var e = 1.23e7

console.log(a,b,c,d,e)

NaN#

非数値を表します。NaN に関連する操作はすべて NaN を返し、NaN は自身を含めてどの値とも等しくありません。

BigInt#

BigIntは任意の長さの整数を表すために使用されます。

number型は 25312^{53}-1(つまり9007199254740991)より大きい数や2531-2^{53}-1より小さい数を安全に表すことができません。

Warning

bigInt型とnumber型は互換性がなく、直接計算することはできません。

const bigInt = BigInt(1234567890123456789012345678901234567890);

文字列#

文字列型は引用符で囲む必要があります。

let str = "Hello";  // ダブルクォート
let str2 = 'Single quotes are ok too';  // シングルクォート
let phrase = `can embed another ${str}`;  // バッククォート

ブール値#

truefalseの 2 つの値しかありません。

Null#

無を表します。

未定義#

値が割り当てられていないことを表します。

var str;
console.log(str) // undefined

シンボル#

一意の識別子を表します。

let user = { 
  name: "zhang"
};
var id = Symbol('id');

user[id] = 1

console.log(user, user[id], user.id)

非表示プロパティ#

グローバル Symbol.for#

同じdescriptionを使用して同じsymbolを取得します。

let id = Symbol.for("id"); // もしシンボルが存在しない場合は作成する
let idAgain = Symbol.for("id");
console.log( id === idAgain );

Symbol.keyFor#

Symbol.forとは異なり、symbolからdescriptionを取得します。

Warning

Symbol.keyForSymbol.forで作成されたsymbolに対してのみ有効です。

let id = Symbol.for('id')
let name = Symbol('id')
console.log(Symbol.keyFor(id),Symbol.keyFor(name))
  • Symbol.hasInstance :他のオブジェクトがそのオブジェクトのインスタンスかどうかを判断する際に呼び出されます。
  • Symbol.isConcatSpeardable:concat () を使用して展開するかどうかを判断します。
  • Symbol.species:派生オブジェクトのコンストラクタを手動で設定できます。
  • Symbol.match:match () が呼び出されたときに呼び出されます。
  • Symbol.search:search () が呼び出されたときに呼び出されます。
  • Symbol.replace:replace () が呼び出されたときに呼び出されます。
  • Symbol.split:split () が呼び出されたときに呼び出されます。
  • Symbol.iterator:イテレータメソッドが呼び出されたときに呼び出されます。
  • Symbol.toPrimitive:オブジェクトをプリミティブ型に変換する際に呼び出されます。
  • Symbol.toStringTag :toString () が呼び出されたときにカスタマイズできます。
  • Symbol.unscopables :with 文で除外されるプロパティです。

オブジェクト型#

データのコレクションやより複雑なエンティティを格納します。

6 つの型判定方法#

typeof#

プリミティブ型と参照型のみを識別できます。typeof xtypeof(x)は同じです。ここでの括弧はtypeofの一部ではありません。これは数学的な演算のグループ化の括弧です。

Note

JavaScript の設計上のミスにより、JavaScript はデータを格納する際に 32 ビットに変換されます。null のタグタイプは object と同じ 000 です。リンク

console.log(typeof 1)
console.log(typeof '1')
console.log(typeof undefined)
console.log(typeof true)
console.log(typeof Symbol())
console.log(typeof null)
console.log(typeof [])
console.log(typeof {})
console.log(typeof console)
console.log(typeof console.log)

constructor#

現在のインスタンスのコンストラクタを指します。

let str = 'Covid-19'
console.log(str.constructor)

let number = 123
console.log(number.constructor)

let arr = [1,2,3]
console.log(arr.constructor)

let fun = function(){}
console.log(fun.constructor)

let obj = {}
console.log(obj.constructor)

instanceof#

プロトタイプチェーン上でそのオブジェクトがコンストラクタのインスタンスであるかどうかを調べます。

Warning

プリミティブ型は JavaScript ではプロトタイプチェーンを持っていないため、instanceof 演算子は常に false を返します。

let arr = [1,2,3]
console.log(arr instanceof Array) 

let fun = function(){}
console.log(fun instanceof Function)

let obj = {}
console.log(obj instanceof Object)
  
let number = 123;
console.log(number instanceof Number);

let string = '123'
console.log(number instanceof String);

let boolean = true
console.log(number instanceof Boolean);

Object.prototype.toString#

データ型を判断するのに非常に便利で、メソッドとしてラップすることができます。

console.log(Object.prototype.toString({}))       
console.log(Object.prototype.toString.call({}))
console.log(Object.prototype.toString.call(1))    
console.log(Object.prototype.toString.call('1'))  
console.log(Object.prototype.toString.call(true))  
console.log(Object.prototype.toString.call(function(){}))  
console.log(Object.prototype.toString.call(null))   
console.log(Object.prototype.toString.call(undefined)) 
console.log(Object.prototype.toString.call(/123/g))    
console.log(Object.prototype.toString.call(new Date())) 
console.log(Object.prototype.toString.call([]))       

ダックタイピング#

特定のプロパティをチェックすることで判断します。

let str = 'Covid-19'
console.log(str.toLowerCase())

let arr = [1,2,3]
console.log(arr.join(','))

等価比較#

console.log(null === null)

console.log(undefined === void 0)
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。