我应该声明变量或访问对象方法吗?

Bla*_*sty 7 typescript angular

哪种更好的做法,为什么?

声明一个变量:

exampleFunction(requestData: Object) {
  const username = requestData.username;

  doSomething(username);
}
Run Code Online (Sandbox Code Playgroud)

或直接访问对象属性?

exampleFunction(requestData: Object) {
  doSomething(requestData.username);
}
Run Code Online (Sandbox Code Playgroud)

如果我使用的代码超过50行并且变量被多次使用怎么办?我应该多次使用变量'username'还是多次使用'requestData.username'?

Cri*_*ìna 5

V8 Javascript引擎执行一些优化预处理代码并检查是否可以删除某个变量或者代码中是否有一些常规模式,以减少执行负载.

出于这个原因,使用表单或其他形式没有内存问题,至少使用V8引擎(例如,Chrome或NodeJS).

即使不执行此优化,它也只是一个指针或一个原始变量,因此它的成本不会超过几个字节.

如果我们谈论传输代码的成本,情况会有所不同.我们知道JavaScript不是一种编译语言,它需要到达客户端的计算机才能执行,因此每个空格,缩进,分号都将按照用于传输的时间顺序进行.

为了降低此成本,您可以对代码进行整理和缩小,但通常不会执行此类优化.

最后,我们不可能想到它可以产生影响的场景,所以我建议你使用你认为它更具可读性的表格而不管其他参数.


小智 5

通过重构Martin Fowler是一种技术(用查询替换Temp).

之后你会去第二个变种

cloneFullProject(requestData: Object) {
  doSomething(requestData.username);
}
Run Code Online (Sandbox Code Playgroud)

但它也有气味(中间人).

作为这个例子的结论,最好完全删除这个方法:)

但是,存在优选的第一例的情况.例如:您有几种采用requestData.username参数的方法.

exampleFunction(requestData: Object) {
  const username = requestData.username;

  doSomething1(username);
  doSomething2(username);
  ...
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,临时变量是合理的


Ans*_*lal 3

第一个选项的优点:

  1. 可读代码
  2. 您可以在传递给另一个方法之前调试和验证值

第一个选项的缺点:

  1. 它将创建不必要的变量并消耗更多内存

  • 你永远不应该使用“let”而不是“const”。 (3认同)