变量

  • 13.1 一直使用 const 来声明变量,如果不这样做就会产生全局变量。我们需要避免全局命名空间的污染。地球队长已经警告过我们了。(译注:全局,global 亦有全球的意思。地球队长的责任是保卫地球环境,所以他警告我们不要造成「全球」污染。)

    1. // bad
    2. superPower = new SuperPower();
    3. // good
    4. const superPower = new SuperPower();
  • 13.2 使用 const 声明每一个变量。

    为什么?增加新变量将变的更加容易,而且你永远不用再担心调换错 ;,

    1. // bad
    2. const items = getItems(),
    3. goSportsTeam = true,
    4. dragonball = 'z';
    5. // bad
    6. // (compare to above, and try to spot the mistake)
    7. const items = getItems(),
    8. goSportsTeam = true;
    9. dragonball = 'z';
    10. // good
    11. const items = getItems();
    12. const goSportsTeam = true;
    13. const dragonball = 'z';
  • 13.3 将所有的 constlet 分组

    为什么?当你需要把已赋值变量赋值给未赋值变量时非常有用。

    1. // bad
    2. let i, len, dragonball,
    3. items = getItems(),
    4. goSportsTeam = true;
    5. // bad
    6. let i;
    7. const items = getItems();
    8. let dragonball;
    9. const goSportsTeam = true;
    10. let len;
    11. // good
    12. const goSportsTeam = true;
    13. const items = getItems();
    14. let dragonball;
    15. let i;
    16. let length;
  • 13.4 在你需要的地方给变量赋值,但请把它们放在一个合理的位置。

    为什么?letconst 是块级作用域而不是函数作用域。

    1. // good
    2. function() {
    3. test();
    4. console.log('doing stuff..');
    5. //..other stuff..
    6. const name = getName();
    7. if (name === 'test') {
    8. return false;
    9. }
    10. return name;
    11. }
    12. // bad - unnecessary function call
    13. function(hasName) {
    14. const name = getName();
    15. if (!hasName) {
    16. return false;
    17. }
    18. this.setFirstName(name);
    19. return true;
    20. }
    21. // good
    22. function(hasName) {
    23. if (!hasName) {
    24. return false;
    25. }
    26. const name = getName();
    27. this.setFirstName(name);
    28. return true;
    29. }