美文网首页
let 还是 const

let 还是 const

作者: 小遁哥 | 来源:发表于2020-05-04 19:10 被阅读0次

导语

React 为例,聚焦在一个类的方法中。
然后,拔剑吧!少年,是熟悉的味道。

正文

0

劝人多用const 是好的,但下面的观点多多少少有点像耍流氓。

  • 既然函数执行完它都没有变,就应该声明为常量
  • 使用const 可以防止一个变量重复使用
  • 声明为常量,后续我就可以不再关注它的变化了。

先看一个渲染表格的例子

数据格式

export enum ESex {
  man = "man",
  woman = "woman",
}
export interface IHero {
  id: string;
  name: string;
  age: number;
  sex: ESex;
}

渲染姓名

  private renderNameColumn = (name, { sex, id }: IHero) => {
    const { checkedIdList } = this.state;
    const checked = checkedIdList.some((key) => key === id);
    let sexStr = sex === ESex.man ? "男" : "女";
    let color = checked ? "red" : "blue";
    return (
      <span style={{ color }}>
        {name} ({sexStr})
      </span>
    );
  };

是常量它不能被再次赋值,不代表没有再次赋值就是常量

checked 在写这行语句的时候它的状态就确定,声明成一个常量为啥问题。
textcolor 的值是没有变,但你很难表述它确定了一个什么状态。

可以预见,在不断变化的业务中,textcolor 是最有可能被再次赋值的。

比如IHero 增加了isAnimal,这时候就要渲染出公、母了,不能总指望在一行代码中写完吧。

如此看来,checkedIdList 声明为const是合理的,它的状态始终不会变。

1

每一个标识符都只承担一种职责,承担多个会造成逻辑的混乱,这是写代码的大忌。
const 是指标不治本,一种职责声明了太多标识符,滥用比不用更可怕。

多用const 正是希望在编码的时候,程序员能通过思考标识符的职责与状态梳理出执行流程,做到提前规划,从而一气呵成。

2

看一个添加的例子

  private onHeroAdd = (hero: IHero) => {
    const { dataSource } = this.state;
    let newDataSource = [...dataSource];
    if (hero.sex === ESex.man) {
      newDataSource.push(hero);
    } else {
      newDataSource.unshift(hero);
    }
    this.setState({
      dataSource: newDataSource,
    });
  };

newDataSource 是变了还是没变?
const 只能限制再次赋值而已。

结语

代码规范应侧重实用性,强调帮助程序员解决问题,而非约束程序员不犯什么问题,正所谓易疏不易堵。

每个人都有能力的天花板,这种事情在于水道渠成,强行拔高无异于揠苗助长,当举棋不定时,请优先使用let,希望总比绝望好。

相关文章

  • TypeScript 02 - 变量声明

    在 TypeScript 中,var 还是 var,let 还是 let,const 还是 const,这里简单温...

  • let 还是 const

    导语 已React 为例,聚焦在一个类的方法中。然后,拔剑吧!少年,是熟悉的味道。 正文 0 劝人多用const ...

  • ES6

    let const let const 没有变量提升let 块级作用域const 常量 模板语言, restfu

  • 工作中常用的 ES6 语法

    变量声明 let 和const 不用var, 用const声明只读变量,let声明变量。let和const都是块级...

  • let和const

    新的赋值语句let和const let和const命令

  • 关于ES6以及ES6常用的方法

    1、变量声明let和const let表示变量、const表示常量。let和const都是块级作用域。 2、模板字...

  • ES6简单总结篇

    一、let const 特性: 1、let const 声明的变量只在他所在的代码块内有效 2、let const...

  • ES6需要记忆理解的地方

    let和const命令 1、let和const均无变量提升。2、let变量指向的地址可变,const指向的地址不可...

  • ES6这些就够了

    1.变量声明const和let let表示变量、const表示常量。let和const都是块级作用域 2.模板字符...

  • (JS)

    ES6 let、const和var的区别 let和const声明变量不存在变量提升 let和const不能重复声明...

网友评论

      本文标题:let 还是 const

      本文链接:https://www.haomeiwen.com/subject/nggxghtx.html