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)
这与ES6无关,它只是逻辑OR运算符."可选参数"听起来与默认参数有关,但这些参数用于function签名.
就个人而言,我会坚持使用逻辑OR,因为它不需要外部库.另外,我建议您在访问对象属性时永远不要使用字符串,因为它会使重构,使用搜索,TypeScript的可选使用变得复杂,并且会妨碍代码完成.
如果要确保在访问null类型的属性时没有发生异常,可以使用此处描述的方法:
getSafe(() => response.pickupLocation.latitude) || ''
Run Code Online (Sandbox Code Playgroud)