属性键答案[值]是否作为全局变量返回?

时间:2019-03-26 18:04:20

标签: javascript memoization

isPrime函数具有一个名为Answers的属性和一个名为value的属性键。如果isPrime.answers [value]在函数末尾返回[value],那么[value]现在是否是其定义函数之外的变量,同时也是Answers对象的属性键?

function isPrime(value) {
  if (!isPrime.answers) {
    isPrime.answers = {};
  }

  if (isPrime.answers[value] !== undefined) {
    return isPrime.answers[value];
  }

  var prime = value !== 1; // 1 is not a prime

  for (var i = 2; i < value; i++) {
    if (value % i === 0) {
      prime = false;
      break;
    }
  }
  return isPrime.answers[value] = prime;
}

1 个答案:

答案 0 :(得分:0)

  

[value]是答案对象的属性键吗?

是的。该键值对的值为prime

  

[值]现在是否是其定义函数之外的变量?

不。最后一行

 return isPrime.answers[value] = prime;

等效于:

 isPrime.answers[value] = prime;
 return prime;

因此它将prime(一个布尔值)存储在对象内部(在value所包含的键下),并返回它。从函数返回变量不会以任何方式改变变量本身,它不会成为全局变量,只是会返回其值(布尔值)。

valueprime都是isPrime的局部变量。