我无法在网上任何地方找到对此的引用,因为我不知道它叫什么或如何描述。
基本上我正在阅读一本JavaScript书,他们正在展示一种名为Memorization的技术,它使用一个计算素数的函数(参见下面的代码)。我想知道的是,var prime = value != 1;
是否有一个术语,它是如何工作的?我从书中对整个函数的解释中理解,它意味着prime被指定了值,但它不能是1.它不会抛出任何错误,所以它只是break
来自代码?包括链接在内的任何信息都将受到欢迎
function isPrime(value) {
if (!isPrime.answers) isPrime.answers = {};
if (isPrime.answers[value] != null) {
return isPrime.answers[value];
}
var prime = value != 1;
for (var i = 2; i < value; i++) {
if (value % i == 0) {
prime = false;
break;
}
}
return isPrime.answers[value] = prime;
}
}
答案 0 :(得分:2)
你应该从右到左阅读表达,以了解它的含义。这里作者意味着prime
的值是布尔值,表示是否value != 1
。因此,如果值为1,则prime
的值为false
,如果值不同,则为true
。
答案 1 :(得分:1)
var prime = value!= 1;
您可以将此行替换为:
if((value != 1) == true)
prime = true;
else
prime = false;
或者改写它:
if((value != 1) == true)
prime = true;
else if((value != 1) == false)
prime = false;
你看到prime成为表达式(value!= 1)的确切值。这就是为什么他们使用这个方便的捷径。但是因为这是教授JS的东西,所以至少应该写它:var prime = (value != 1) ? true : false;
这更明显。或者甚至更好地让代码看起来像这样:
function isPrime(value) {
if (!isPrime.answers) isPrime.answers = {};
if (isPrime.answers[value] != null) {
return isPrime.answers[value];
}
if(value == 0)
isPrime.answers[value] = false;
else if(value == 1)
isPrime.answers[value] = true;
else {
var prime = false;
for (var i = 2; i < value; i++) {
if (value % i == 0) {
prime = true;
break;
}
}
isPrime.answers[value] = prime;
}
return isPrime.answers[value];
}
我这样说它会更清楚。但也许他们希望你教你所有那些捷径。我不知道。上面的代码与原始版本中的代码相同。你看到还有一些额外的行,因为我没有使用赋值,也代表了JavaScript提供的结果(在Java中也是如此)。
答案 2 :(得分:0)
您指定了比较value != 1
返回的布尔值