2015-01-09 128 views
0

JavaScript和JavaScript的新東西是有趣的。我被展示了這個例子:在Javascript中處理字符串和整數的不同方法

"37" - 7 // "30" 
"37" + 7 // "337" 

這是一個練習來展示Javascript如何轉換和處理字符串和整數。我不明白的是爲什麼這兩個陳述的處理方式不同。第一條語句將37轉換爲整數並減去7,剩下30(如果我將其更改爲6,則它變爲31)。但是,在第二個語句中,它將它視爲一個字符串,並將第二個7連接到該字符串的末尾。在文本

var number = "37" - 7 
console.log(number); 

,將其保存爲一個.js文件,並用Node.js的執行它:

出於測試目的,我寫這

如果沒有簡單的方法來解釋這一點,我只會將這個問題歸咎於JS所具有的奇怪行爲。過於複雜的答案會浪費在像我這樣的新手上。

預先感謝您。

+1

不能從字符串中減去,所以JavaScript的對待 - 簽署爲具有數字參數。然而,你可以添加字符串,所以如果左邊有一個字符串,那麼JavaScript會將右邊的arg轉換爲字符串。這不是奇怪的行爲,它是預期的。 – 2015-01-09 22:17:09

+1

'+'用於加法和連接,而'-'只是減號。在你的情況下,你用'+'連接字符串。 – j08691 2015-01-09 22:17:13

回答

3

它們的處理方式不同,因爲+被重載。它有兩個功能:

  • 此外
  • 字符串連接

這些操作都在不同的數據類型(數字和字符串)定義的,所以如果它得到混合類型(而不是數字),它有決定要執行哪個操作。有人認爲如果至少有一個操作數是一個字符串,則應該執行字符串連接。

然而,-運營商只定義爲數字,所以操作數將始終轉換爲數字。

+0

啊。我不敢相信我忽略了這一點。自從我用一種可以與字符串一起工作的編程語言搞混了,已經有一段時間了。我習慣了concat()函數。謝謝你提醒我。 – Rincewind 2015-01-09 22:22:15

2

當你看到這兩種情況時,需要記住的是,當你使用字符串時,加法有不同的含義。

當你這樣做:

37 + 7 // 44 

你只是兩數相加......但如果你做

"37" + 7 // "337" 

要附加7字符串 「37」。

由於減法符號沒有與JS串的使用,它假定37爲int並執行其產生減法:

"37" - 7 // "30" 
+1

這是正確的 – Jay 2015-09-26 21:32:55

相關問題