之间有什么区别
a *= 1;
和
a = +a;
在JavaScript中?
将string
转换为number
(int或float)。它们的行为与parseInt
和parseFloat
不同。但这两行之间有什么区别吗?
答案 0 :(得分:4)
没有任何区别。它们都使用ToNumber转换转换为数字。数值乘以1和一元加运算使值保持不变。
答案 1 :(得分:3)
之间有什么区别
a *= 1
这是乘法赋值,你取a并乘以1。
a = +a
这是使用一元加运算符的简单赋值。它评估a并将其转换为数字。
一元加运算符和parseInt或parseFloat之间的主要区别在于,一元可以转换整数和浮点数的字符串表示形式,以及非字符串值true,false和null。 parseInt和parseFloat只能将字符串转换为int和float。
parseInt方法还允许您设置使用的基数(基数/数学数字系统)。即。
parseInt(a, 10); //decimal numeral system
答案 2 :(得分:3)
没有区别,两者都试图将值转换为数字,并指定乘法的值或unary plus +
的结果。
从一个空字符串开始,两个结果都返回NaN
,如果是一个数字或只是一个数字,结果就是两个情况下的数字。
var a, b;
a *= 1;
b = +b;
console.log(a, b);
a = 'foo';
b = 'foo';
a *= 1;
b = +b;
console.log(a, b);
a = '';
b = '';
a *= 1;
b = +b;
console.log(a, b);
a = '7';
b = '7';
a *= 1;
b = +b;
console.log(a, b);
a = 42;
b = 42;
a *= 1;
b = +b;
console.log(a, b);
答案 3 :(得分:2)
技术意义上没有区别。但是使用一元加运算符,在这种情况下,将字符串转换为数字可能更明显,使您的代码更具可读性。