11. 函数

1. 默认值

  1. // 例子 11-1
  2.  
  3. // bad
  4. function test(quantity) {
  5. const q = quantity || 1;
  6. }
  7.  
  8. // good
  9. function test(quantity = 1) {
  10. ...
  11. }
  1. // 例子 11-2
  2.  
  3. doSomething({ foo: 'Hello', bar: 'Hey!', baz: 42 });
  4.  
  5. // bad
  6. function doSomething(config) {
  7. const foo = config.foo !== undefined ? config.foo : 'Hi';
  8. const bar = config.bar !== undefined ? config.bar : 'Yo!';
  9. const baz = config.baz !== undefined ? config.baz : 13;
  10. }
  11.  
  12. // good
  13. function doSomething({ foo = 'Hi', bar = 'Yo!', baz = 13 }) {
  14. ...
  15. }
  16.  
  17. // better
  18. function doSomething({ foo = 'Hi', bar = 'Yo!', baz = 13 } = {}) {
  19. ...
  20. }
  1. // 例子 11-3
  2.  
  3. // bad
  4. const Button = ({className}) => {
  5. const classname = className || 'default-size';
  6. return <span className={classname}></span>
  7. };
  8.  
  9. // good
  10. const Button = ({className = 'default-size'}) => (
  11. <span className={classname}></span>
  12. );
  13.  
  14. // better
  15. const Button = ({className}) =>
  16. <span className={className}></span>
  17. }
  18.  
  19. Button.defaultProps = {
  20. className: 'default-size'
  21. }
  1. // 例子 11-4
  2.  
  3. const required = () => {throw new Error('Missing parameter')};
  4.  
  5. const add = (a = required(), b = required()) => a + b;
  6.  
  7. add(1, 2) // 3
  8. add(1); // Error: Missing parameter.