在表达式前面加加号有什么作用?

3
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

更多答案:https://dev59.com/9WYq5IYBdhLWcg3wcwSE 和 https://dev59.com/5mw15IYBdhLWcg3wVKJ1 - GOTO 0
更多答案请参考:http://stackoverflow.com/questions/2880902/javascript-why-to-sign-prefix-a-variable - James
2个回答

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标准规范中的+运算符
一元 + 运算符将其操作数转换为数字类型。JavaScript字符串将根据在ECMA 5.1标准中规定的这些规则被内部转换为数字。 编辑:根据Number规格说明,它也使用相同的ToNumber将其参数内部转换为数字。因此,从技术上讲,Number(<number string>)+<number string>相同。

2

它用于将一个值转换为浮点数。

+"123.25" + 2 = 125.25

类似的是:
(x | 0)

该操作实际上是通过与零进行按位或运算而转换为整数。

在asm.js中,这些形式也可用作参数和本地变量的类型声明。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接