JavaScript基础回顾查漏补缺——第一期
valueOf 与 toString的对比
valueOf偏向于运算,toString偏向于显示- 强转字符串优先使用
toString,强转数字优先使用valueOf - 正常情况下,都是需求字符串,优先使用
toString, - 运算操作符情况下优先使用
valueOf,避免使用字符串运算导致错误
| 对象类型 | valueOf的返回值 | toString的返回值 | valueof返回值类型 | toString返回值类型 |
|---|---|---|---|---|
| Array | 数组本身 | 数组转字符串,类似Array.join() | Array | String |
| Boolean | 布尔值 | 'true'、'false' | Boolean | String |
| Date | 毫秒数 | 字符串日期,如"2022-09-13T16:45:21.693Z" | Number | String |
| Function | 函数本身 | Function | / | / |
| Number | 数字值 | 数字字符串,如'123' | Number | String |
| Object | 对象本身 | '[object Object]' | Object | String |
| String | 字符串 | 字符串 | String | String |
JavaScript的隐式转换规则
-
- 转成string类型: +(字符串连接符)
-
- 转成number类型:++/--(自增自减运算符) + - * / %(算术运算符) > < >= <= == != === !=== (关系运算符)
-
- 转成boolean类型:!(逻辑非运算符)
注意:
- undefined != undefined 等价
NaN != NaN, NaN 与其他数值进行比较的结果总是不相等的,包括它自身在内,所以是true - null >= null 等价
0 >= 0,0 等于 0,所以是true
闭包
闭包就是能够读取其他函数内部变量的函数。
//示例
function a () {
let num = 0
//下面是个闭包
return function () {
return num++
}
}
const b = a()
console.log(b()) // 0
console.log(b()) // 1
特点:
- 访问函数定义时所在的作用域(阻止回收)
- 私有化变量
- 使用不当可能造成内存泄漏
从闭包又可以延展到JavaScript垃圾回收机制和作用域相关知识,发现自己不记得的朋友要补补。
今天老任直面会放出出了野炊2的消息,2023.5,期待!