# lodash源码分析之baseToNumber 本文为读 lodash 源码的第二百五十二篇,后续文章会更新到这个仓库中,欢迎 star:[pocket-lodash](https://github.com/yeyuqiudeng/pocket-lodash) gitbook也会同步仓库的更新,gitbook地址:[pocket-lodash](https://www.gitbook.com/book/yeyuqiudeng/pocket-lodash/details) ## 依赖 ```javascript import isSymbol from '../isSymbol.js' ``` [《lodash源码分析之isSymbol》](../isSymbol.md) ## 源码分析 `baseToNumber` 的作用和 `toNumber` 差不多,都是将 `value` 转换成 `number` 类型。 但是 `baseToNumber` 作为一个内部方法,它的入参或用途是明确的,因此不会处理太多的特例。 `baseToNumber` 不会保证二进制、八进制或者十六进制形式的字符串会被正确地转换成对应的 `number` 类型。 这样处理的原因也是为了性能,不需要做太多无效的判断。 源码如下: ```javascript function baseToNumber(value) { if (typeof value === 'number') { return value } if (isSymbol(value)) { return NAN } return +value } ``` 如果本身就是数字类型,直接返回本身 `value` 。 如果是 `Symbol` 类型,则返回 `NaN`。 其实类型,使用 `+value` 进行隐式转换。 ## License [署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)](http://creativecommons.org/licenses/by-nc-nd/4.0/) 最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见: ![](https://raw.githubusercontent.com/yeyuqiudeng/resource/master/images/qrcode_front-end-article.jpg) 作者:对角另一面