繁体   English   中英

调用未在代码中任何地方定义的函数?

[英]Calling a function that is not defined anywhere in the code?

function Person(first,last,age) {
   this.firstname = first;
   this.lastname = last;
   this.age = age;
   var bankBalance = 7500;

   var returnBalance = function() {
      return bankBalance;
   };

  this.askTeller = function(){
      return returnBalance;
  }

}

var john = new Person('John','Smith',30);
console.log(john.returnBalance);
var myBalanceMethod = john.askTeller();
var myBalance = myBalanceMethod();
console.log(myBalance);

这是代码学院的一个示例。 我不明白

var myBalanceMethod = john.askTeller();
var myBalance = myBalanceMethod();

我在想的是var myBalanceMethod = john.askTeller(); myBalanceMethod的值myBalanceMethodreturnBalance 然后我不确定, var myBalance = myBalanceMethod(); 是因为myBalanceMethod实际上不是一种方法,我不认为吗? 有人可以解释一下这些最后几行代码的内容吗

myBalanceMethod是一种方法。

var myBalanceMethod = john.askTeller();

此行设置了参考,很可能是此代码演示的内容。 将myBalanceMethod分配给函数john.askTeller()后,该函数成为函数。

为了进一步证明这一点,我可以执行以下操作:

function addNumbers(a, b) {
     return a + b;
}

var myRefObj = addNumbers;

alert(addNumbers(10,20));
alert(myRefObj(10,20));  // same answer

john.askTeller()返回returnBalance ,它是一个函数,然后分配给myBalanceMethod 因此, myBalanceMethod是一个函数,可以使用()进行调用(您正在john内调用returnBalance ,否则无法访问)。

var myBalanceMethod = john.askTeller(); // myBalanceMethod is now a reference to returnBalance in john
var myBalance = myBalanceMethod(); // returnBalance is executed and value (7500) assigned to myBalance
var myBalanceMethod = john.askTeller();

上面将把returnBalance方法分配给myBalanceMethod。 请注意,它没有打开和关闭括号()。 意思是,它不会执行功能,只会分配。 因此,myBalanceMethod现在是一个函数。 看下面的代码:

this.askTeller = function(){
  return returnBalance;
}

然后,

var myBalance = myBalanceMethod();

给myBalance分配了myBalanceMethod()返回的值。 注意(),因此它执行函数。 在您的Person构造函数中,它将返回7500的BankBalance。因此,为myBalance分配了7500的值。

var returnBalance = function() {
  return bankBalance;

};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM