❕类型转换
弱类型中,变量没有类型(不涉及存储结构)。好处是文法上很灵活,坏处是让 JavaScript 变量的管理和运行时的类型判断变得复杂。所以要能正确地处理:运行时数据类型的识别 + 类型的正确转换。
“运行时类型识别”是一种独立于语言本身的技术。除了弱类型语言需要之外,强类型语言有时也需要它来处理多态。
表达式和运算符是程序完成计算的基础。类型转换是通过调用对象方法的 valueOf()
或 toString()
来执行的。
表达式中(对于对象)的转换规则:
如果是优先转换为字符串,必定先调用
toString()
方法如果是优先转化为数值,必定先调用
valueOf()
强制类型转换
parseInt()
,parseFloat()
.toString()
对象当函数用
typeof
(当变量没声明时,不报错)不足只能区别基本类型(原始值和对象)
对于继承时的类型,需要再配合
instanceof
运算符,constructor
属性eg.
obj instanceof Iterator
其他语言也或多或少地存在着精度的问题,但是 JavaScript 的问题是非常严重
在进行浮点运算前,可以事先确定好问题的精度范围
Math 的
floor
,ceil
,round
(取整数-正负数的区别-厉害了)Number 的
toFixed
(保留 n 位小数)
消除浮点数误差的常见手段,比如进行精度判断
读框架或者库的源码(比较巧妙和有趣的写法)
Last updated