首頁 > web前端 > js教程 > 類型實用程式 - JavaScript 挑戰

類型實用程式 - JavaScript 挑戰

Mary-Kate Olsen
發布: 2024-10-30 08:12:27
原創
508 人瀏覽過

Type Utilities - JavaScript Challenges

介紹

檢查類型是日常編碼和技術面試中 JavaScript 的常見做法。

您可以在 Github 上找到這篇文章中的所有程式碼。


原始值

在 JavaScript 中,除 Object 之外的所有類型都定義直接在語言最低層級表示的不可變值。我們將這些類型的值稱為原始值

有 7 個原始值:

  1. 未定義
  2. 布林值
  3. 數字
  4. BigInt
  5. 字串
  6. 符號

除 null 之外的所有原始類型都可以透過 typeof 運算子進行測試。 typeof null 傳回“object”,因此必須使用 === null 來測試 null。

因此,我們得到了第一種類型的效用函數。

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
登入後複製

物件

所有不是原始型別的東西都是 JavaScript 中的物件。這包括:

  • 普通物體
  • 數組
  • 功能
  • 日期
  • 正規表示式
  • 其他內建物件類型

這是陣列、函數、物件的第二個實用函數。

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()

JavaScript 中有多種檢查類型的方法,包括:

  • typeof 適用於除 null 之外的所有原始類型。
  • instanceof 判斷物件是否是特定建構函式或類別的實例。它不適用於原始值。

Object.prototype.toString.call() 是 JavaScript 中最可靠的型別檢查方法。

我們可以透過以下方式提取類型:

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
登入後複製

參考

  • JavaScript 資料型別與資料結構 - MDN
  • 資料型態 - JavaScript.info
  • 參考型別 - JavaScript.info
  • 偉大的前端

以上是類型實用程式 - JavaScript 挑戰的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板