toFinite
语法
_.toFinite(value)
转换 value 为一个有限数字。
源码
import toNumber from './toNumber.js';
/** Used as references for various `Number` constants. */
var INFINITY = 1 / 0,
MAX_INTEGER = 1.7976931348623157e+308;
/**
* Converts `value` to a finite number.
*
* @static
* @memberOf _
* @since 4.12.0
* @category Lang
* @param {*} value The value to convert.
* @returns {number} Returns the converted number.
* @example
*
* _.toFinite(3.2);
* // => 3.2
*
* _.toFinite(Number.MIN_VALUE);
* // => 5e-324
*
* _.toFinite(Infinity);
* // => 1.7976931348623157e+308
*
* _.toFinite('3.2');
* // => 3.2
*/
function toFinite(value) {
if (!value) {
return value === 0 ? value : 0;
}
value = toNumber(value);
if (value === INFINITY || value === -INFINITY) {
var sign = (value < 0 ? -1 : 1);
return sign * MAX_INTEGER;
}
return value === value ? value : 0;
}
toFinite
方法的的作用是转成有限的数字。至于无限是什么,无穷就是无限。
var INFINITY = 1 / 0, //Infinity
MAX_INTEGER = 1.7976931348623157e+308; //
MAX_INTEGER
这个值可以通过Number.MAX_VALUE
获取到,大于MAX_INTEGER代表Infinity
明确了这两点,toFinite
就很简答了
function toFinite(value) {
if (!value) {
return value === 0 ? value : 0; // 不传value 直接返回0
}
value = toNumber(value); //调用tonumber转换成number类型
if (value === INFINITY || value === -INFINITY) { //正无穷或者负无穷 ,设置一个 标记sign,
var sign = (value < 0 ? -1 : 1); // sign -1 || 1
return sign * MAX_INTEGER; // 返回对应的最大值或者最小值。
}
return value === value ? value : 0;// 过滤掉NaN
}
总结一下toFinite
不会返回NaN ,或者Infinity(无穷),只会返回一个有限的数字。
_.toFinite(3.2);
// => 3.2
_.toFinite(Number.MIN_VALUE);
// => 5e-324
_.toFinite(Infinity);
// => 1.7976931348623157e+308
_.toFinite('3.2');
// => 3.2
toInteger
转换 value 为一个整数。
function toInteger(value) {
var result = toFinite(value),
remainder = result % 1;
return result === result ? (remainder ? result - remainder : result) : 0;
}
这个方法的逻辑很简单,先通过toFinite
将传入的参数value转换成一个有限的数字。也就是无穷等会转换成一个具体的数字。
remainder
就是判断result是否有小数位。
result === result
判断是否是NaN
,如果是NaN,返回0,
(remainder ? result - remainder : result)
如果remainder存在,则表明小数部分存在,result减去小数组分的值便是整数部分,否则直接返回整数的result
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。