在Javascript中如何做var myvar = value!= 1工作?

时间:2013-09-30 11:09:34

标签: javascript

我无法在网上任何地方找到对此的引用,因为我不知道它叫什么或如何描述。

基本上我正在阅读一本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;
  }
}

3 个答案:

答案 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返回的布尔值

的素数