簡體   English   中英

為什么我得到一個數字而不是一個連接的字符串?

[英]Why am I getting a number and not a concatenated string?

我有這個代碼

var n = parseInt(prompt("Give me a number"));
var sum = 0;
for (let i=0; i < n.toString().length; i++){
    let expon = n.toString()[i] ** n.toString().length;
    sum += expon;
}

我的疑問如下:如果我的 n 是 371,則 n.toString()[0] 是 '3' (A STRING,.)。 為什么當我做 ** n.toString()?length (即 3)時呢? 我得到27 ?!!?

另外,我很清楚,如果 x = '3' 並且我做 x + x 我得到 '33' 而不是 6。這只會發生在加法上嗎? 為什么?

檢查這個: https://medium.com/swlh/strings-and-basic-mathematical-operators-in-javascript-e9de3d483dae

簡單來說 - 在 JavaScript 中,當嘗試將 String 類型添加到非 String 類型時,添加運算符會自動將添加的元素強制轉換為字符集,因為 '+' 可以理解為添加OR 作為連接 雖然,對 String 和非 String 類型執行的每一種不同的算術運算(減法、除法、乘法、冪等)都會強制將第一個算術運算強制轉換為 Number 形式。 如果不可能,我們將收到 NaN 結果。

'3' ** 3是 27,因為**盡可能將其 arguments 都轉換為數字。 除了數字取冪,它沒有 function。

'3' + 3是 '33' 因為+具有多種可能的功能(加法和字符串連接),並且如果 arguments 至少有一個是字符串,則使用字符串連接而不是加法。 在另一個宇宙中,它可能會嘗試先進行數字加法並最終得到 6,但我們宇宙的語言設計者選擇了這種方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM