Rumah  >  Artikel  >  hujung hadapan web  >  Jenis Utiliti - Cabaran JavaScript

Jenis Utiliti - Cabaran JavaScript

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-30 08:12:27426semak imbas

Type Utilities - JavaScript Challenges

pengenalan

Menyemak jenis ialah amalan biasa dalam JavaScript dalam pengekodan harian dan wawancara teknikal.

Anda boleh menemui semua kod dalam siaran ini di Github.


Nilai primitif

Dalam JavaScript, semua jenis kecuali Object mentakrifkan nilai tidak boleh diubah yang diwakili secara langsung pada tahap bahasa yang paling rendah. Kami merujuk kepada nilai jenis ini sebagai nilai primitif.

Terdapat 7 nilai primitif:

  1. Batal
  2. Tidak ditentukan
  3. Boolean
  4. Nombor
  5. BigInt
  6. Rentetan
  7. Simbol

Semua jenis primitif, kecuali null, boleh diuji oleh jenis operator. typeof null mengembalikan "objek", jadi seseorang itu perlu menggunakan === null untuk menguji null.

Oleh itu, kami mendapat fungsi utiliti jenis pertama.

function isBoolean(value) {
  return typeof value === 'boolean';
}

function isString(value) {
  return typeof value === 'string';
}

function isNumber(value) {
  return typeof value === 'number';
}

function isSymbol(value) {
  return typeof value === 'symbol';
}

function isBigInt(value) {
  return typeof value === 'bigint';
}

function isUndefined(value) {
  return typeof value === 'undefined';
}

function isNull(value) {
  return value === null;
}

// Usage example
console.log(isSymbol(Symbol('test'))); // => true
console.log(isNull(null)); // => true
console.log(isUndefined(undefined)); // => true
console.log(isNumber(1)); // => true
console.log(isString('')); // => true
console.log(isBoolean(true)); // => true
console.log(isBigInt(9007199254740991n)); // => true

Objek

Semua yang bukan jenis primitif ialah objek dalam JavaScript. Ini termasuk:

  • Benda biasa
  • Susun atur
  • Fungsi
  • Tarikh
  • RegExps
  • Jenis objek terbina dalam lain

Inilah fungsi utiliti kedua untuk Tatasusunan, Fungsi, Objek.

function isArray(value) {
  return Array.isArray(value);
}

function isFunction(value) {
  return typeof value === 'function';
}

function isObject(value) {
  // for null and undefined
  if (value == null) {
    return false;
  }

  return typeof value === 'object';
}

function isPlainObject(value) {
  // for null and undefined
  if (value == null) {
    return false;
  }

  const prototype = Object.getPrototypeOf(value);
  return prototype === Object.prototype || prototype === null;
}

// Usage example
console.log(isArray(new Array())); // => true
console.log(isObject(Object(null))); // => true
console.log(isFunction(Object.prototype.toString)); // => true
console.log(isPlainObject(Object.create(null))); // => true

Object.prototype.toString.call()

Terdapat beberapa kaedah untuk menyemak jenis dalam JavaScript, termasuk:

  • typeof untuk semua jenis primitif kecuali null.
  • instanceof menentukan sama ada objek adalah contoh pembina atau kelas tertentu. Ia tidak berfungsi dengan nilai primitif.

Object.prototype.toString.call() ialah kaedah yang paling boleh dipercayai untuk menyemak jenis dalam JavaScript.

Kami boleh mengekstrak jenis dengan:

function getType(value) {
  const type = typeof value;

  if (type !== 'object') {
    return type;
  }

  return Object.prototype.toString
    .call(value)
    .slice(8, -1)
    .toLowerCase();
}

// Usage example
console.log(getType(1)); // => number
console.log(getType('')); // => string
console.log(getType({})); // => object
console.log(getType(null)); // => null
console.log(getType(undefined)); // => undefined
console.log(getType(Symbol())); // => symbol
console.log(getType(BigInt(1234567890123456789012345))); // => bigint
console.log(getType(function () {})); // => function
console.log(getType(new Date())); // => date
console.log(getType(new Map())); // => map
console.log(getType(new Set())); // => set 
console.log(getType(new RegExp("cat", "i"))); // => regex

Rujukan

  • Jenis data JavaScript dan struktur data - MDN
  • Jenis data - JavaScript.info
  • Jenis Rujukan - JavaScript.info
  • GreatFrontEnd

Atas ialah kandungan terperinci Jenis Utiliti - Cabaran JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn