js中一段代码看不懂

在读一个api源码的时候,发现一段代码看不懂

function get (obj, key) {
    return key.split('.').reduce(function (o, x) {
      return (typeof o === 'undefined' || o === null) ? o : o[x]
    }, obj)
  }

obj , key 参数具体指代什么我也不清楚,但是在Stack Overflow上找到一样的代码

[图片]
clipboard.png

说明这个工具函数应该还是有一定的复用性的
只是我英语太渣读不懂,

有没有js高手告诉我这段代码的作用是什么,以及如何去读懂它

阅读 2.1k
2 个回答
const obj = {a:{b:{c:1}}}
get(obj, 'a.b.c') // 1
obj.a.b.c // 1
get(obj, 'a.d.e') // undefined
obj.a.d.e // Error

可能就是这个作用吧,当前置key的值不存在的时候避免报错,返回undefined。

翻译下截图中的内容,这个函数的作用是,“获取指定对象的嵌套属性”

obj 就是“指定对象”,而 key 就是“嵌套属性”,取值是链式的字符串形式 'loc.foo.bar'

当要获取的嵌套属性不存在时(可能是属性链中某个中间属性就不存在),就返回 null 或 undefined。

了解这段代码的作用:(英语不好可以用)翻译工具 + 看调用示例
如何去读懂它:哪里不懂点(查)哪里 (split? reduce? 查文档吧)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题