JavaScript >> Javascript 文檔 >  >> Tags >> string

JavaScript toString() 方法,解釋 + 示例

您希望對變量執行的最常見的事情之一是打印它的字符串表示形式。這就是 toString() 方法是為了。本文將解釋何時以及如何使用它。

轉換為字符串

顯示在計算機屏幕上的數據最常顯示為文本字符串,無論數據是如何存儲的。數字、數組、布爾值和對像都具有字符串表示形式,可以在屏幕上將它們視為文本,供用戶閱讀或用於調試目的。

不同的方法用於將非字符串值轉換為字符串進行顯示,具體取決於被轉換為字符串的變量的類型。

轉換與強制

在我們探索這些方法之前,有兩種是毫無價值的 變量可以轉換為字符串的方式,沒有 toString() 方法被直接調用。

類型轉換 是變量到字符串的顯式轉換:

var myString = String(MyVariable);

這是通過顯式調用 String() 構造函數從給定的參數創建一個新的字符串變量。

類型強制 是變量到字符串的隱式(自動)轉換:

var myString = myVariable + "hello";

強制轉換發生在必須將變量轉換為字符串以執行給定任務時——在這種情況下,當變量與字符串連接時(使用 + 運算符),它將自動轉換為字符串以允許將其連接到“hello”。

強制轉換是 JavaScript 的一個“特性”,在許多其他編程語言中都不存在,因此一些程序員選擇盡可能使用顯式轉換,以使讀者清楚他們期望變量是什麼處理過。

toString() 方法

無論是顯式轉換還是隱式轉換,toString() 調用變量的方法來生成變量的字符串表示。直接調用 toString() 方法如下:

var myString - myVariable.toString();

取決於類型 變量 toString() 被調用,預期會有不同的行為。

JavaScript 的內置類型

JavaScript 的內置類型(Number、Bigint、String、Object/Array、Boolean)都有自己的 toString() 方法。以下是每個人的行為方式。

注意:null 和 undefined 類型會 有任何附加的方法。

數值變量(Number 和 BigInt)

調用 toString() JavaScript 中 Number 類型變量的方法將返回數字的字符串表示形式。

var myNumber = 6.5;
var myString = myNumber.toString(); // "6.5" - a string representation of the provided number

可選的基數 可以提供以指定表示數值時使用的基數。基數必須在 2 之間 和 36 .

var myNumber = 5;
var myString = myNumber.toString(2); // "101" - the string representation was generated using the supplied radix of 2

可以使用顯式或隱式類型轉換來提供基數,並且只能通過調用 toString() 直接數變量的方法。

同樣的行為適用於 BigInt 變量類型。

字符串

調用 toString() String 變量的方法幾乎可以滿足您的期望 - 它返回未修改的原始字符串的副本。

var myString = "Hello!";
var myNewString = myString.toString(); // "Hello!"

布爾值

布爾對象 toString() 方法返回 “true”“錯誤” .

var myBoolean = false;
var myString = myBoolean.toString(); // "false"

布爾值只能 取一個真或假值。

數組

toString() 方法也可用於查看 JavaScript 數組的字符串表示形式。

var myArray = ['dog', 'fish", 'cat'];
var myString = myArray.toString(); // "dog,fish,cat"

toString() 的默認行為 JavaScript 數組中的方法是以數組自己的字符串表示形式返回每個元素(通過調用 toString() 每個元素的方法),用逗號分隔。

日期

toString() Date 對象的方法將返回有關存儲的數據和時間的信息,包括星期幾、時區和單個字符串中的完整日期/時間。

var myDate = new Date();
var myString = myDate.toString(); // "Mon Feb 07 2022 20:56:24 GMT+1030 (Australian Central Daylight Time)"

函數

JavaScript 函數本身就是對象,並且有自己的 toString() 方法返回一個包含函數完整源代碼的字符串。

function sayHi(){
    console.log('Hi!');
}
var myString = sayHi.toString(); 
// "function sayHi(){
//    console.log('Hi!');
// }"

自定義對象/類和覆蓋 toString()

JavaScript 對像也有一個 toString() 方法。不幸的是,它的默認實現並不是那麼有用:

var myObject = {name:'bob'};
var myString = myObject.toString(); // "[object Object]"

上面聲明了一個通用對象,它是 toString() 方法調用。生成的字符串中包含的唯一信息是“[object Object]” – 告訴我們變量是一個對象 對象類的 .沒用,這是所有的默認行為 對象——Fruit 類的對象 將具有 “[object Fruit]”的字符串表示形式 ,例如。

class Fruit {
    constructor(name) {
        this.name = name
    }
    toString() {
        return this.name;
    }
}

var myFruit = new Fruit('Apple');
var myString = myFruit.toString(); // "Apple"

在一個名為 Fruit 的 JavaScript 類之上 已創建,它接受一個名稱 作為參數。在 Fruit 的聲明中 類,toString() 定義了返回水果名稱屬性的方法。這toString() 方法覆蓋 默認的。

因此,而不是默認的 toString() Fruit 對象的方法 返回的類“[object fruit]” ,調用自定義的,返回水果本身的名稱(在上述情況下,“Apple” )。


Tutorial JavaScript 教程
  1. React 中使用 useState() 的 Component 語法和 Component() 之間的一個實際區別

  2. JavaScript 數組檢查 |示例代碼

  3. 新 Twitch 回顧:EV 路由第 2 部分!

  4. 算法 101:FizzBu​​zz 單個數字的 4 種方法

  5. 我的第一個網站

  6. 待辦事項 JavaScript

  7. 無需文檔查詢即可訪問頭部、主體

  1. 走進蓋茨比

  2. 什麼是 JSON

  3. Bun 比 Node.js 快那麼多嗎?

  4. let { [key]:id =0, ...rest } =obj - 解構到極限

  5. 簡單的 NodeJS 服務器

  6. 在貓鼬中僅更改整個嵌入式文檔數組的一個字段

  7. 我如何使 PostGraphile 比 Prisma 更快:1 年後

  1. 在 JavaScript 中將值轉換為布爾值的 2 種方法

  2. 如何將 Auth0 添加到您的 Angular 應用程序

  3. 我使用 React 的第一個月

  4. ECMAScript 2020 最大的新特性