2012-03-02 196 views
2

jQuery中源:在JavaScript中,「i = + i」是什麼意思?

eq: function(i) { 
    i = +i; 
    return i === -1 ? 
     this.slice(i) : 
     this.slice(i, i + 1); 
}, 

它是用於化妝肯定解析我爲int?

+2

可能重複http://stackoverflow.com/questions/5450076/whats-the-significant-use-of-unary-plus-and-minus-operators – scibuff 2012-03-02 12:46:28

+1

@scibuff:'var i = -5;我= +我; console.log(i);'....仍然是負數(基礎數學)。 – 2012-03-02 12:47:04

+0

@scibuff:怎麼樣?這個問題的前幾個字就是這個問題的答案。 – 2012-03-02 12:48:23

回答

5

它的作用是確保解析我爲int?

不,這是確保i(無論是floatint)。鑑於該功能在做什麼,最好將i轉換爲非十進制值,但我不確定slice如何處理小數。

的更多信息:MDN - Arithmetic Operators

+1

'slice'通過[ToInteger](http://es5.github.com/#x9.4)操作轉換它的參數。 (基本上,如果遞上一個分數,它會將它們放置在底層。) – 2012-03-02 12:51:08

+0

@ T.J.Crowder:謝謝:) – 2012-03-02 12:52:03

3

差不多,但是任何數字沒有問題。

[ECMA-262: 11.4.6]:一元+操作其操作數轉換成Number類型。

生產UnaryExpression:+ UnaryExpression如下評價:

  1. EXPR是評估UnaryExpression的結果。
  2. 返回ToNumber(GetValue(expr))。
2

是的,它會確保它是一個int(或一般一個數字作爲@Felix說)。試試這個代碼了:

var i = "2"; 
console.log(i === 2); // false 
console.log(+i === 2); // true 
2

是,將一元+一個變量確保,如果它的一些其他類型的(一個字符串,例如),它得到converted to a number(不是int,JavaScript沒有整數儘管它在內部用於某些操作)。數字可以是分數,如果它是一個字符串,則按照JavaScript解析數字的常用方式進行分析(例如,+"0x10"16十進制)。

0

+i確保我被解析成數字。

+0

什麼?不,它不。 – 2012-03-02 12:48:40

+0

錯了。 '我+ =我'增加了實際值+1! **不** **'我= +我' - http://www.devcurry.com/2011/07/unary-plus-operator-in-javascript.html – Smamatti 2012-03-02 12:50:29

+0

我有一個語法錯誤。我刪除了這個,因爲它對這個問題也沒有用處。 – 2012-03-02 12:51:35

相關問題