什么"< +"这段代码意味着什么?

时间:2018-01-29 05:55:25

标签: javascript

我遇到了这个奇怪的假设操作员,并且无法弄清楚它是什么。有什么想法吗?

var laugh = function(num){
var string=""; 
    for (i=0; i<+num; i++) {
    string+="ha";  
    }
return string + "!"; 
};

console.log(laugh(10));

3 个答案:

答案 0 :(得分:4)

JS中+符号的一个目的是将正确的部分解析为数字。

const str = '4';
console.log(str + 5); // Concatenared as strings
console.log(+str + 5); // Sums the numbers

在您的情况下,您有一个语句i < +num,它只会将num解析为数字,i与之进行比较。如果您的num是一个数字,则无效。

看。我使用了'10'而不是10,它仍然有效,因为给定的字符串被解析为数字。

var laugh = function(num) {
   var string=""; 
   for (var i = 0; i < +num; i++) {
      string+="ha";  
   }
   
   return string + "!"; 
};

console.log(laugh('10'));

答案 1 :(得分:2)

<+不是运营商。您可以将其解释为for (i=0; i < +num; i++),其中+是一元加运算符。一元加号运算符会将num强制转换为数字。

例如,如果传递给num的值为"100"(作为String),则一元加运算符会将其强制转换为100({{1} }})。

MDN contains some examples of unary plus和其他算术运算符。

答案 2 :(得分:1)

这是解析它的方式;

i < +num

换句话说,在num运行之前,<被强制转换为整数。

没有<+。它们被解析为单独的符号。