我遇到了这个奇怪的假设操作员,并且无法弄清楚它是什么。有什么想法吗?
var laugh = function(num){
var string="";
for (i=0; i<+num; i++) {
string+="ha";
}
return string + "!";
};
console.log(laugh(10));
答案 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} }})。
答案 2 :(得分:1)
这是解析它的方式;
i < +num
换句话说,在num
运行之前,<
被强制转换为整数。
没有<+
。它们被解析为单独的符号。