下午做了道题,题是这样的:
Complete the function circleArea so that it will return the area of a circle with the given radius. Round the returned number to two decimal places (except for Haskell). If the radius is not positive or not a number, return false.
Example:
circleArea(-1485.86); //returns false
circleArea(0); //returns false
circleArea(43.2673); //returns 5881.25
circleArea(68); //returns 14526.72
circleArea("number"); //returns false
最后结果如下:
var circleArea = function(radius) {
return radius > 0 ? +(radius*radius*Math.PI).toFixed(2) : false;
};
这些都不是重点,重点是里面的+(radius*radius*Math.PI).toFixed(2)
这句前面的+
号,这里是为了把String转为number型?为何这样可以?
然后我自己试了下:
一个+
号为何如此神奇,底下的原理是什么?
类似的还有~~
也可以把一个字符串转为数字类型?
这是为何呢?
问题解决(2015.09.17 22:12更新):
对于非数值应用一元操作符,该类型会像Number()转型函数一样对这个值执行转换。《JavaScript高级程序设计P38》
var a = 'abc' + 'xyz'; //a的值为:abcxyz,字符串与字符串是连接
var a = 10 + 5; //a的值为:15,数字是加
var a = 'abc' + 10; //a的值为:abc10,字符串与数字,自动将10转换成字符串了
var a = 'abc' + 10 + 20 + 'cd'; //a的值为:abc1020cd
var a = 10 + 20 + 'abc' + 'cd'; //a的值为:30abccd,可以数字加的先数字加,然后再连接