We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
本文为读 lodash 源码的第九十七篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
import setToArray from './setToArray.js'
lodash源码分析之setToArray
createSet 是一个用来将 array 转换为 set 的函数。但是会有一些兼容判断。
createSet
array
set
const INFINITY = 1 / 0 const createSet = (Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? (values) => new Set(values) : () => {}
可以看到,如果支持 Set 则 createSet 为
Set
const createSet = (values) => new Set(values)
否则为空函数:
const createSet = () => {}
第一个条件判断 Set 浏览器是否支持很容易理解,但是这个条件是什么意思呢?
setToArray(new Set([,-0]))[1]) == INFINITY
原来规范规定 Set 中的键正负 0 和 0 是没有区分的,都为 0 ,但是在 IE 中,是将正负 0 和 0 是分开的,在这种情况下,也是直接使用空函数。
0
IE
MDN: Set
lodash.js createSet函数的疑问
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面
The text was updated successfully, but these errors were encountered:
No branches or pull requests
本文为读 lodash 源码的第九十七篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
gitbook也会同步仓库的更新,gitbook地址:pocket-lodash
依赖
lodash源码分析之setToArray
源码分析
createSet
是一个用来将array
转换为set
的函数。但是会有一些兼容判断。可以看到,如果支持
Set
则createSet
为否则为空函数:
第一个条件判断
Set
浏览器是否支持很容易理解,但是这个条件是什么意思呢?原来规范规定
Set
中的键正负0
和0
是没有区分的,都为0
,但是在IE
中,是将正负0
和0
是分开的,在这种情况下,也是直接使用空函数。参考资料
MDN: Set
lodash.js createSet函数的疑问
License
署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)
最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:
作者:对角另一面
The text was updated successfully, but these errors were encountered: