簡體   English   中英

為什么“+”運算符可以將字符串解析為數字?

[英]Why does the “+” operator work in parsing string to number?

從我之前不太記得的情況來看,javascript 會在執行操作之前嘗試將操作數轉換為類似的類型。 但是,當我嘗試在控制台中執行以下操作時:

+'11111'
*'11111'

它們產生不同的結果 - 加法解析,乘法失敗。 這意味着我記得是錯誤的。 + 起作用的確切原因是什么? 我也看到人們在 IIFE 中使用它

+(function() {

})()

//the same as:

;(function() {

})()

+'11111'結果是數字11111因為一元 +將其右側的表達式轉換為數字。 但是沒有“一元 *”這樣的東西,所以*'11111'會拋出一個錯誤。 *'11111'甚至是什么意思?)

至於 IIFE:

;(function() {

})()

; 確保 IIFE上一條語句結束開始。 如果不是為了; , 並且前面的語句沒有以;結尾; , 上一行缺少自動分號插入可能會導致錯誤:

 const arr = [] (function() { })()

但是在前一行使用不帶分號的+並不是一個好主意,因為這樣可以將 IIFE 的返回值添加或連接到前一行:

 const arr = [] +(function() { })() console.log(arr);

如果你總是在適當的時候把分號放在語句的末尾,那么就沒有必要在 IIFE 的(之前放任何東西:

 const arr = []; (function() { console.log('iife'); })(); console.log(arr);

(如果您不是專家,我建議您使用分號,而不是依賴於ASI有點奇怪的規則——它們有時會導致難以理解的錯誤)

此處此處對 JavaScript 一元運算符有很好的解釋和示例。

TDLR:一元運算嘗試將任何東西轉換為數字,如果不能成功將返回 NaN

+3                                   // returns 3
+'-3'                                // returns -3
+'3.14'                              // returns 3.14
+'3'                                 // returns 3
+'0xFF'                              // returns 255
+true                                // returns 1
+'123e-5'                            // returns 0.00123
+false                               // returns 0
+null                                // returns 0
+'Infinity'                          // returns Infinity
+'infinity'                          // returns NaN
+function(val){  return val }        // returns NaN

暫無
暫無

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

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