運算子 - 在 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)
將輸出數字。
