首页 > 解决方案 > 属性键答案 [值] 是否作为全局变量返回?

问题描述

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

标签: javascriptmemoization

解决方案


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

是的。该键值对的值为prime

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

没有。最后一行

 return isPrime.answers[value] = prime;

相当于:

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

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

value和都是prime的局部变量isPrime


推荐阅读