2012-03-02 143 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

相关问题