Lodash获得vs es6后备值?

abr*_*sme 10 javascript functional-programming lodash redux

Lodash与使用新的ES6可选参数相比如何?

我有以下代码:

location: {
  latitude: response.pickupLocation.latitude || "",
  longitude: response.pickupLocation.longitude || ""
},
Run Code Online (Sandbox Code Playgroud)

有了Lodash,我知道我可以跑:

latitude: get(response, 'pickupLocation.latitude', '')
Run Code Online (Sandbox Code Playgroud)

或者我可以创建一个接收对象和路径的函数,并始终''作为默认回退返回.除了代码更短的事实之外,在这里使用Lodash还有什么优势吗?

Nin*_*olz 16

优点_.get是,如果存在属性,则省略继续检查,这是必要的.

latitude: response && response.pickupLocation && response.pickupLocation.latitude || "",
Run Code Online (Sandbox Code Playgroud)


小智 11

对于最新的浏览器,或者通过使用 polyfills 或转译器,您还可以使用可选的链接和 nullish 合并运算符,例如:

latitude: response?.pickupLocation?.latitude ?? ''
Run Code Online (Sandbox Code Playgroud)


str*_*str 6

这与ES6无关,它只是逻辑OR运算符."可选参数"听起来与默认参数有关,但这些参数用于function签名.

就个人而言,我会坚持使用逻辑OR,因为它不需要外部库.另外,我建议您在访问对象属性时永远不要使用字符串,因为它会使重构,使用搜索,TypeScript的可选使用变得复杂,并且会妨碍代码完成.

如果要确保在访问null类型的属性时没有发生异常,可以使用此处描述的方法:

getSafe(() => response.pickupLocation.latitude) || ''
Run Code Online (Sandbox Code Playgroud)