一、对象 ------ 原始值转换
目的:对象是如何转换为原始值的,以及如何对其进行自定义
obj[
Symbol.
toPrimitive]
=
function``(``hint``)
{
// 这里是将此对象转换为原始值的代码
// 它必须返回一个原始值
// hint = "string"、"number" 或 "default" 中的一个
}
二、原始类型的方法
原始类型中的方法可以直接用.xxxx调用,达到某种效果,如:
let
str =
"Hello"``;
alert``(
str.``toUpperCase``(``)
)``;
// HELLO
- 字符串
str
是一个原始值。因此,在访问其属性时,会创建一个包含字符串字面值的特殊对象,并且具有可用的方法,例如toUpperCase()
。 - 该方法运行并返回一个新的字符串(由
alert
显示)。 - 特殊对象被销毁,只留下原始值
str
。
null/undefined 没有任何方法
三、数字类型
1、编写数字的方法
1e6 = 1 * 10 的6次方
12e-5 = 12 * 10的-5次方
2、前缀 : 0x/0X 16进制 、 0o/0O 八进制 、 0b/0B 二进制
前缀加数字得到该数字十进制下的结果
0x10 = 16
0o10 = 8
3、toString
方法 num.toString(base)
返回在给定 base
进制数字系统中 num
的字符串表示形式。
num = 255;
num.toString(2); // 二进制下的'255' = 11111111
n.toString(8); // 八进制下的'255' = 377
n.toString(16); // 十六进制的'255' = ff
4、舍入
Math.floor
向下舍入:3.1
变成 3
,-1.1
变成 -2
。
Math.ceil
向上舍入:3.1
变成 4
,-1.1
变成 -1
。
Math.round
向最近的整数舍入:3.1
变成 3
,3.6
变成 4
,中间值 3.5
变成 4
。
5、将数字舍入到小数点后 n
位的方法
1、乘除法
例如,要将数字舍入到小数点后两位,我们可以将数字乘以 100
,调用舍入函数,然后再将其 除回。
let
num =
1.23456``;
alert``(
Math.``round``(
num *
100``)
/
100
)``;
2、函数 toFixed(n) 将数字舍入到小数点后 n
位,并以字符串形式返回结果。
使用一元加号调用,将其转换为数字,例如 + num.toFixed(5)
。
6、不精确的计算
为什么0.1+0.2 === 0.3 返回 false?
因为:一个数字以其二进制的形式存储在内存中,一个 1 和 0 的序列。但是在十进制数字系统中看起来很简单的 0.1
,0.2
这样的小数,实际上在二进制形式中是无限循环小数。
在二进制数字系统中,可以保证以 2
的整数次幂作为除数时能够正常工作,但 1/10
就变成了一个无限循环的二进制小数。
解决这个问题最可靠的方法是借助方法 toFixed(n) 对结果进行舍入
let
sum =
0.1
+
0.2``;
alert``(
sum.``toFixed``(``2``)
)``;
乘/除法可以减少误差,但不能完全消除误差
7、isFinite和isNaN
isNaN(value)
将其参数转换为数字,然后测试它是否为 NaN
isFinite(value)
将其参数转换为数字,如果是常规数字而不是 NaN/Infinity/-Infinity
,则返回 true,
有时 isFinite
被用于验证字符串值是否为常规数字
8、parseInt和parseFloat
它们可以从字符串中"读取"数字,直到无法读取为止。如果发生 error,则返回收集到的数字。函数 parseInt
返回一个整数,而 parseFloat
返回一个浮点数。
alert``(
parseInt``(``'100px'``)
)``;
// 100
alert``(
parseFloat``(``'12.5em'``)
)``;
// 12.5
alert``(
parseInt``(``'12.3'``)
)``;
// 12,只有整数部分被返回了
alert``(
parseFloat``(``'12.3.4'``)
)``;
// 12.3
某些情况下,parseInt/parseFloat
会返回 NaN
。当没有数字可读时会发生这种情况
9、一些数字类型方法
Math.random()
返回一个从 0 到 1 的随机数(不包括 1)。
Math.max(a, b, c...)
和 Math.min(a, b, c...)
从任意数量的参数中返回最大值和最小值。
Math.pow(n, power)
返回 n
的给定(power)次幂。