javascript - 在 Angular 中定义类范围之外的变量是一个好习惯吗?

标签 javascript angular typescript

在 Angualr 中经常会看到这些代码:

import { Component, OnInit } from '@angular/core';

@Component({
    selector: 'app',
    template: '<div *ngFor="let item of data"></div>'
})
export class App {
    // we define variable here
    data = [1, 2];
    tempData = [3, 4]; //temporary data, not involved in view rendering
}

正如我们所看到的,有一个临时变量不会参与 View 渲染,但是临时变量对于我们的应用程序临时存储数据来说也是必需的。

这样写怎么样:

import { Component, OnInit } from '@angular/core';
const tempData = [3, 4]; //temporary data, not involved in view rendering
@Component({
    selector: 'app',
    template: '<div *ngFor="let item of data"></div>'
})

export class App {
    // we define variable here
    data = [1, 2];
}

由于临时变量不会在 View 渲染中使用,因此我可以在类外部定义它。而且在我看来,它会优化性能(因为它减少了 Angular 检测变量,我不知道是否正确)。

那么哪种代码风格更好,并且它们之间有性能差异?

最佳答案

在第一个示例中,类的每个实例都有一个tempData(它不是变量,而是属性)。在第二个示例中,one tempData 被类的所有实例重用(在本例中,它不是属性,而是常量)。

您使用哪一种取决于您是否需要每个实例 tempData 还是共享一个。

如果它是私有(private)信息并且您不需要按实例声明它,那么在模块的顶层(组件外部)声明它是绝对没问题的。它将对该模块私有(private)。

So which code style is better, and it has performance difference between them ?

两者都不是更好;它们是不同的,并且做不同的事情,因此您可以根据需要执行的操作使用其中之一。它们之间的任何性能差异都可以完全忽略不计,无需考虑。

关于javascript - 在 Angular 中定义类范围之外的变量是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52200973/

相关文章:

node.js - 如何在没有任何 json 文件的情况下使用 Firebase Auth 进行身份验证?

javascript - 什么符号/标记集代表 JavaScript 中不为 null 或未定义的所有内容?

javascript - 类型 '(event: FormEvent<HTMLInputElement>) => void' 不可分配给类型 '() => any'

css - PrimeNG DataTable - 当包装在 TabView 中时,contextMenu 偏离中心

Angular 5 - 自定义管道 'could not be found' 错误

javascript - 如何设置悬停时的 Bootstrap 下拉菜单?

javascript - 如何在对象数组中动态添加键?

css - Angular 2动画在最后添加溢出属性

javascript - 阻止 Google 图表放大

javascript - D3 Javascript 条形图