如何提供 Function 的 Default Object Parameter ?

栏目: JavaScript · 发布时间: 7年前

内容简介:實務上 Function 的 Argument 應盡量以 Object 傳遞,而非 Primitive,但若要對 Property 提供 Default Value,該怎樣實現才優雅呢 ?ECMAScript 5ECMAScript 2015

實務上 Function 的 Argument 應盡量以 Object 傳遞,而非 Primitive,但若要對 Property 提供 Default Value,該怎樣實現才優雅呢 ?

Version

ECMAScript 5

ECMAScript 2015

ECMAScript 5

function func(options) {
  var firstName = '';
  var lastName = '';

  if (!options || !options.firstName)
    firstName = 'Sam';

  if (!options || !options.lastName) {
    lastName = 'Xiao';
  }

  return `${firstName} ${lastName}`;
}

console.log(func());
console.log(func({}));

options parameter 可能為 undefined ,也就是沒傳,或者傳入是 empty object。

因此要判斷 parameter 是否為 undefined ,還要判斷 property 是否為 undefined

由於 ES5 原本風格就是要你在 runtime 判斷並提供 default value,因此無法討避醜陋的寫法。

如何提供 Function 的 Default Object Parameter ?

ECMAScript 2015

function func({firstName = 'Sam', lastName = 'Xiao'} = {}) {
  return `${firstName} ${lastName}`;
}

console.log(func());
console.log(func({}));

ECMAScript 2015 提供了 Object Destructing 之後,我們可以不用宣告 parameter object,直接在 parameter list 加以 destruct variable,並提供 default value。

這種寫法在 ECMAScript 2015 經常看到,但老實說並不是最優雅的寫法。

Parameter 使用 object 的用意為的就是讓 parameter list 能越精簡越好,但使用了 Object Destructing 且提供 default value 之後,就喪失使用 object 的優勢了。

如何提供 Function 的 Default Object Parameter ?

function func(options = {}) {
  const {
    firstName = 'Sam',
    lastName = 'Xiao',
  } = options;

  return `${firstName} ${lastName}`;
}

console.log(func());
console.log(func({}));

比較優雅的寫法是 parameter list 僅提供 empty object,但 Object Destructing 則寫在 function 內,如此 parameter list 維持精簡,也保留了 parameter 使用 object 的初衷,且 destruct variable 寫在 function body 更一目瞭然。

如何提供 Function 的 Default Object Parameter ?

Conclusion

  • Object Destructing 是 ECMAScript 2015 很精彩的功能,但若要提供 default value,建議不要直接寫在 parameter list,而是分開寫

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据结构与算法

数据结构与算法

BrunoRPreiss / 电子工业出版社 / 2003-1 / 55.00元

本书是作者根据他在滑铁卢大学计算机工程学院教授数据结构与算法课程的经验编写而成的。它采用C++面向对象的设计模式,不仅系统全面地介绍了各种传统的数据结构,还把它们按照类和类层次的现代理念予以展开,进而达到抽象结构与实际设计的完美统一。本书的后三章通过引入抽象问题求解的概念,集中讲述了算法技术和各算法之间的关系。另外,作者运用一定的数学工具以及必要的分析技术和分析理论,对每种数据结构及相关算法都进行一起来看看 《数据结构与算法》 这本书的介绍吧!

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具