调用未在代码中的任何位置定义的函数

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

本文关键字:任何 位置 定义 函数 代码 调用      更新时间:2023-09-26
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的值设置为returnBalance。那我不确定什么,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 构造函数中,它返回 BankBalance,即 7500。因此,myBalance 被分配了 7500 个值。

var returnBalance = function() {
  return bankBalance;

};

相关文章: