a = = 1和a = + a?之间有什么区别?

时间:2018-03-10 09:44:54

标签: javascript int

之间有什么区别
a *= 1;

a = +a;
在JavaScript中

string转换为number(int或float)。它们的行为与parseIntparseFloat不同。但这两行之间有什么区别吗?

4 个答案:

答案 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)

技术意义上没有区别。但是使用一元加运算符,在这种情况下,将字符串转换为数字可能更明显,使您的代码更具可读性。