我没有上过Java的任何官方课程。

我经常在教程中阅读以下内容:

function Bank(name) {
   this.name = name;
   var balance = 100;

   // *my question here* method to access balance
   this.getBalance = function() {
       return balance * 0.9 ;
   };
}

var myBank = new Bank("My Bank");
console.log( myBank.getBalance() );


开发人员为什么使用getBalance()而不是getBalance?

我认为“ getBalance”更易于阅读,但是没有教程使用它:

// *my question here* method to access balance
   this.getBalance = balance * 0.9 ;


然后

console.log( myBank.getBalance );


我没有看到任何使用上述样式编写的教程,即使它更简单。所以:

两种代码样式之间有什么不同吗?是否需要避免.getBalance操作私有变量?

在此先感谢您的解释。

最佳答案

您必须了解变量,函数和函数调用之间的区别。这是变量:

this.getBalance = balance * 0.9 ;


getBalance变量的值在执行代码时计算一次。每次访问getBalance(不带括号)时,将返回以前计算的值。

使用getBalance变量具有重要意义。如果以后再修改基础balance变量,则getBalance不会反映该更改,因为它是使用旧的balance值计算的。

在以下情况下:

this.getBalance = function() {
   return balance * 0.9 ;
};


getBalance也是变量,但它指向一个函数,而不是一个简单的值。如果像变量一样访问它,您将获得函数参考:

var fun = this.getBalance


您现在可以使用fun()调用该函数,但是fun引用本身(与this.getBalance相同)在您的情况下不是很有用。

当然,您可以使用this.getBalance()调用该函数。语义上的区别如下:每次调用getBalance()时,函数的主体都会执行。这意味着再次读取balance的值,并且getBalance()返回值始终是最新的。

如您所见,在分配函数和分配简单值(如数字)之间存在巨大差异。根据您选择的方法,它会有不同的含义。您必须了解JavaScript的功能方面,才能充分利用其功能。

08-03 14:56