在表达式前面加号是什么用法

时间:2014-03-06 06:32:11

标签: javascript expression operator-keyword

eq: function( i ) {
    var len = this.length,
        j = +i + ( i < 0 ? len : 0 );
    return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
},

我是一般的编程新手,但是在表达式前面单个+符号的目的是什么,我已经在jquery库中看到了很多。

+(expression)

这些我理解,因为它们是消极的:

-(1);// -1

2 个答案:

答案 0 :(得分:3)

它将字符串编号转换为表达式中的实际编号。

console.log(typeof +"1");        // number
console.log("1" + "1");          // 11
console.log(+"1" + +"1");        // 2
console.log("1.3" + "1.546");    // 1.31.546
console.log(+"1.3" + +"1.546");  // 2.846

引自ECMA 5.1 Standard Specifications for + operator

  

一元+运算符将其操作数转换为数字类型。

在内部,JavaScript字符串将转换为基于ECMA 5.1标准中指定的these rules的数字。

修改:根据Number规范,它还在内部使用相同的ToNumber将其参数转换为数字。因此,技术上Number(<number string>)+<number string>相同。

答案 1 :(得分:2)

用于将值转换为浮点数。

+"123.25" + 2 = 125.25

类似的是

(x | 0)

而是用于转换为整数(操作是按位或为零)。

在asm.js中,这些表单也可以用作参数和本地的类型声明。