javascript查漏补缺之五——《数字和日期》
/ / 点击 / 阅读耗时 6 分钟js中数字的范围和类型
范围: -(2^53 - 1) ~ (2^53 - 1)
类型: 普通数字, +Infinity, -Infinity, NaN
数字对象属性和方法的引用
属性包括最大值、最小值、非数、正无穷、负无穷、比较值、最大安全数、最小安全数。

方法调用的时候要使用
Number.的形式,忘记这个在哪儿看到的了,总之就是有好处就对了。
实现精确四舍五入保留小数位数的方法
Number.prototype.toFixed():这个写在数字对象原型上的方法就可以做到,只不过会返回字符串形式的结果。(负数因为操作符的优先级问题,在不加括号的情况下不会返回字符串形式)使用这种方法保留小数后几(3)位:
1
const rounded = Math.round(output * 1000) / 1000;
Math对象的方法
Math对象不可以自定义。
floor()往下舍;ceil()往上进;round()四舍五入,只可保证整数部分是精确的;trunc()截掉数字的小数部分。random()返回一个浮点, 伪随机数在范围[0,1), 不能使用它们来处理有关安全的事情。使用Web Crypto API 来代替, 和更精确的window.crypto.getRandomValues() 方法。得到一个大于等于0,小于1之间的随机数
1
2
3function getRandom() {
return Math.random();
}得到一个两数之间的随机数
1
2
3function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}得到一个两数之间的随机整数
1
2
3
4
5function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min)) + min; //The maximum is exclusive and the minimum is inclusive
}得到一个两数之间的随机整数,包括两个数在内
1
2
3
4
5function getRandomIntInclusive(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min; //The maximum is inclusive and the minimum is inclusive
}
日期对象
如果不使用new调用
Date(),则返回的是当前日期时间的字符串。使用new调用
new Date()。使用这种方式创建的时间对象都可以使用Date对象的相关方法进行操作。如果不传入参数,则返回当前日期时间的时间对象;
传入
1995, 11, 25, 9, 30, 0表示传入的是1995年11月25日9点30分0秒。
Date对象的常用方法
Date.prototype.getDate(): 根据本地时间返回指定日期对象的月份中的第几天(1-31)。Date.prototype.getDay(): 根据本地时间返回指定日期对象的星期中的第几天(0-6)。Date.prototype.getFullYear(): 根据本地时间返回指定日期对象的年份。Date.prototype.getHours(): 根据本地时间返回指定日期对象的小时(0-23)。Date.prototype.getSeconds(): 根据本地时间返回指定日期对象的秒数(0-59)。Date.prototype.getMinutes(): 根据本地时间返回指定日期对象的分钟(0-59)。Date.prototype.getMonth(): 根据本地时间返回指定日期对象的月份(0-11)。Date.prototype.toDateString(): 返回一个人类可读的日期字符串,比如 “Mon Jul 09 2018” 。Date.prototype.toLocalDateString(): 返回一个 “2018/7/9” 这样形式的日期字符串。术语叫该字符串格式与系统设置的地区关联。Date.prototype.toLocaleString():
返回一个 “2018/7/9 上午10:48:34” 这样形式的日期字符串。术语叫该字符串与系统设置的地区关联。Date.prototype.toLocaleTimeString():返回一个 “上午10:48:34” 这样形式的时间字符串。Date.prototype.toString(): 返回 “Mon Jul 09 2018 10:48:34 GMT+0800 (CST)” 这种形式的字符串。感觉上面那种 toLocale 形式的更有用些。