【问题标题】:Is property key answers[value] being returned as a global variable?属性键答案 [值] 是否作为全局变量返回?
【发布时间】:2019-03-26 18:04:20
【问题描述】:

函数 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;
}

【问题讨论】:

  • 本例中唯一的全局是isPrime函数对象

标签: javascript memoization


【解决方案1】:

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

是的。该键值对的值为prime

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

没有。最后一行

 return isPrime.answers[value] = prime;

相当于:

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

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

valueprime 都是 isPrime 的局部变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 2011-05-28
    • 2014-04-12
    • 1970-01-01
    相关资源
    最近更新 更多