【问题标题】:Should I initialize variables in JavaScript with default values?我应该用默认值初始化 JavaScript 中的变量吗?
【发布时间】:2018-05-22 10:23:42
【问题描述】:

我有一个 AngularJS 控制器。我在顶部的绑定变量中遵循John Papa 指南。我的问题是:在声明变量时使用默认值初始化变量是否有任何性能提升,或者会对性能产生不利影响?

function someCtrl($scope) {
    var vm = this;
    vm.someVar = '';    // Should it rather be vm.someVar; ?
}

我在 AngularJS 上下文中问过这个问题。不过,这是一个通用的 JavaScript 问题。

更新:以下情况如何?

function someCtrl($scope) {
    var someVar = '';    // Should it rather be var someVar; ?
}

【问题讨论】:

  • 你根本不需要初始化它,除非它是一个数组(稍后推送一些值),一个嵌套对象(写下属性),或者一些硬编码的值

标签: javascript angularjs performance variable-declaration variable-initialization


【解决方案1】:

vm.someVar = ''; - 应该是vm.someVar;吗?

这既不是变量也不是声明。

这是一个在vm 对象上创建属性的赋值。相比之下,vm.someVar; 只是一个空操作(它什么都不做),应该完全放弃。

是的,如果你想创建你需要初始化它们的属性。您可以使用undefined 初始化它们,但最好使用它们稍后将具有的相同类型的默认值来初始化它们。是的,在构造函数中创建属性(在创建对象时)而不是事后添加它们是一种很好的做法。

【讨论】:

  • 1.你能回答同样的问题,但使用var someVar 而不是vm.someVar 上下文? 2. 除了是一种好的做法外,是否有任何性能损失或收益(即使是最轻微的)?
  • @AhsenKh this in controller 与 controllerAs 语法一起用作范围(与 $scope.someVar 基本相同)。绑定到范围的变量可以在 HTML 中显示为{{someVar}}。使用var someVar 也可以,但它不会附加到作用域,所以你不能在 HTML 中显示它
  • @AhsenKh 1) 我在使用变量的地方声明变量,所以无论如何我总是初始化它们。不过真的没关系。 2) 是的,创建具有他们需要的所有属性的对象并且以后不改变它们的形状对性能更好。
猜你喜欢
  • 2013-01-17
  • 1970-01-01
  • 2016-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-24
相关资源
最近更新 更多