加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

为什么我喜欢 JavaScript 可选链

发布时间:2019-10-31 08:45:39 所属栏目:建站 来源:疯狂的技术宅
导读:许多 JavaScript 的特征极大地改变了你的编码方法。从 ES2015 及更高版本开始,对我的代码影响较大的成果是解构、箭头函数、类和模块体系。 制止2019年8月,一项新提案可选链(optional chaining)进入了第3阶段,将是一个很好的改造。可选的链接变动了从深

相反,行使 ?. 会见影戏问题 movie?.title 没有任何意义。影戏工具不会是空的。

  1. // Good 
  2. function logMovie(movie) { 
  3.   console.log(movie.director?.name); 
  4.   console.log(movie.title); 
  5.  
  6. // Bad 
  7. function logMovie(movie) { 
  8.   // director needs optional chaining 
  9.   console.log(movie.director.name); 
  10.  
  11.   // movie doesn't need optional chaining 
  12.   console.log(movie?.title); 

6.2 凡是有更好的选择

以下函数 hasPadding() 接管具有可选 padding 属性的样式工具。 padding 具有可选的属性 left,top,right,bottom。

实行用可选链运算符:

  1. function hasPadding({ padding }) { 
  2.   const top = padding?.top ?? 0; 
  3.   const right = padding?.right ?? 0; 
  4.   const bottom = padding?.bottom ?? 0; 
  5.   const left = padding?.left ?? 0; 
  6.   return left + top + right + bottom !== 0; 
  7.  
  8. hasPadding({ color: 'black' });        // => false 
  9. hasPadding({ padding: { left: 0 } });  // => false 
  10. hasPadding({ padding: { right: 10 }}); // => true 

固然函数可以正确地确定元素是否具有添补,可是为每个属性行使可选链是毫无须要的。

更好的要领是行使工具散布运算符将添补工具默以为零值:

  1. function hasPadding({ padding }) { 
  2.   const p = { 
  3.     top: 0, 
  4.     right: 0, 
  5.     bottom: 0, 
  6.     left: 0, 
  7.     ...padding 
  8.   }; 
  9.   return p.top + p.left + p.right + p.bottom !== 0; 
  10.  
  11. hasPadding({ color: 'black' });        // => false 
  12. hasPadding({ padding: { left: 0 } });  // => false 
  13. hasPadding({ padding: { right: 10 }}); // => true 

我以为这一版本的 hasPadding() 可读性更好。

7. 我为什么喜好它?

我喜好可选链运算符,由于它应承轻松地从嵌套工具中会见属性。它可以防备编写针对会见者链中每个属性会见器上的空值举办验证的样板代码。

当可选链与空值归并运算符团结行使时,可以获得更好的功效,从而更轻松地处理赏罚默认值。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读