網站搜尋

運算子 - 在 JavaScript 中=+_ 代表什麼


我在想 JavaScript 中的 = +_ 運算子是什麼意思。看起來它像是在進行賦值。

範例:

hexbin.radius = function(_) {
   if (!arguments.length)
       return r;
   r = +_;
   dx = r * 2 * Math.sin(Math.PI / 3);
   dy = r * 1.5;
   return hexbin;
};

答案#1

r = +_;
  • + 嘗試將 _ 轉換成數字。
  • _ 只是變數名稱(不是運算子),它可以是 a、foo 等等。

範例:

+"1"

將"1"轉換為純數字1。

var _ = "1";
var r = +_;

r 現在是 1,而不是 "1"。

此外,根據 MDN 關於算術運算子的頁面:

一元加號運算子置於其運算元之前,並評估其運算元,但如果運算元尚未是數字,會嘗試將其轉換為數字。[...] 它可以轉換整數和浮點數的字串表示,以及非字串值 true、false 和 null。支持十進位和十六進位("0x" 前綴)格式的整數。不過負數也被支持(但十六進位例外)。如果無法解析某個特定值,它將評估為 NaN。

也注意到

一元加號是將某物轉換為數字最快且首選的方法

答案#2

它不是一個賦值運算符。

  • _ 只是傳給函數的一個參數。

    hexbin.radius = function(_) {
                    //       ^ It is passed here
        // ...
    };
    
  • 在下一行 r=+_; 中,前面的 + 將該變數 (_) 轉換為數字或整數值,並賦值給變數 r

不要將它與 += 運算子混淆

答案#3

=+ 其實是 兩個運算子,= 是賦值運算子,而 + 和 _ 是變數名稱。

喜歡:

i = + 5;
or 
j = + i;
or 
i = + _;

我接下來的程式碼將幫助你展示如何使用 =+ 將 string 轉換成 int。
範例:

y = +'5'
x = y +5
alert(x);

輸出 10

用法:所以這裡 y 是整數 5,因為 =+
否則:

y = '5'
x = y +5
alert(x);

輸出 55

而 _ 是一個變數。

_ = + '5'
x = _ + 5
alert(x)

輸出 10

另外, 了解你是否也可以使用 ~ 達到相同的效果會很有趣(如果字串是 整數 字串 (浮點數會被四捨五入為整數))

y = ~~'5'  // notice used two time ~
x = y  + 5
alert(x);

也輸出 10

~ 是位元反向運算符:將其運算元的位元反向。我做了兩次,但數值大小沒有改變。

答案#4

它不是 =+。在 JavaScript 中,+ 意味著將其轉換為數字。

+'32' 返回 32。

+'a' 返回 NaN。

所以你可以使用 isNaN() 來檢查它是否可以轉換成數字。

答案#5

它很狡猾。

重要的是要理解這裡的底線字符 實際上是一個變量名,而不是一個運算符。

在那個前面的加號是用來取得底線的正數值——也就是有效地將底線變數轉換為整數。你也可以使用 parseInt() 達到同樣的效果,但這裡使用加號轉換可能是因為它更簡潔。

那就只剩下等號作為標準的變數賦值。

這可能不是故意寫來混淆的,因為有經驗的 Javascript 程式設計師通常會認出底線(underscore)是一個變數。但如果你不知道,這肯定會非常困惑。我當然不會那樣寫;即使在最佳情況下,我也不喜歡使用簡短而毫無意義的變數名——如果你想在 JS 代碼中使用短變數名來節省空間,可以使用壓縮工具,而不是一開始就用短變數名來寫。

答案#6

= +_ 將把 _ 轉換為數字。

所以

var _ = "1",
   r = +_;
console.log(typeof r)

將輸出數字。