Javascript 为什么一切都不是最好的?

Javascript 为什么一切都不是最好的?,javascript,Javascript,我想写这个程序来寻找素数。我已经记下了它的基本原理,除了不管我输入什么数字,它都会以非素数的形式返回。我在这件事上纠结太久了,弄不清是什么。它是在我的“if”语句中还是在我的isPrime函数中?请帮忙,谢谢 var number = 0; function main() { number = parseInt(prompt("Please Enter a Number to Determine Whether or Not it is Prime:", "Enter a Nu

我想写这个程序来寻找素数。我已经记下了它的基本原理,除了不管我输入什么数字,它都会以非素数的形式返回。我在这件事上纠结太久了,弄不清是什么。它是在我的“if”语句中还是在我的isPrime函数中?请帮忙,谢谢

    var number = 0;

function main()
{
    number = parseInt(prompt("Please Enter a Number to Determine Whether or Not it is Prime:", "Enter a Number"));
    while(isNaN(number) === true)
        {   alert("You Entered an Invalid Number. Please Reenter");
        number = parseInt(prompt("Please Enter a Number to Determine Whether or Not it is Prime:", "Enter a Number"));
        }

    isPrime(number);

    if(prime = false)
        {   alert("The number " + number + " is a Prime Number!");  }
    else
        {   alert("The number " + number + " is NOT a Prime Number!"); }
}
/*------------------------------------------------------*/
function isPrime(number)
{
    if(number < 2)
        {return false;}

    var prime = false;  

    for(var i = 2; i <= Math.sqrt(number); i++)
    {   if(number % i == 0)
        {prime = true;}
    }

    return prime;
}
var编号=0;
函数main()
{
number=parseInt(提示(“请输入一个数字以确定它是否为素数:”,“输入一个数字”);
while(isNaN(数字)==true)
{警报(“您输入的号码无效,请重新输入”);
number=parseInt(提示(“请输入一个数字以确定它是否为素数:”,“输入一个数字”);
}
isPrime(数字);
if(prime=false)
{alert(“数字“+number+”是质数!”);}
其他的
{alert(“数字“+number+”不是质数!”);}
}
/*------------------------------------------------------*/
函数isPrime(数字)
{
如果(数字<2)
{返回false;}
var prime=false;
对于(var i=2;i
您刚刚将
prime
赋值为false

你不想那样做

相反,您确实希望将其分配给函数的结果

您刚刚将
prime
赋值为false

你不想那样做

相反,您确实希望将其分配给函数的结果。

替换:

if(prime = false)
这不仅是因为使用赋值而不是比较,还因为未定义素数(它不会从该函数调用返回/创建全局变量
prime

替换为:

if (!isPrime(number)) {
现在,它不使用变量来存储isPrime调用的结果,而是直接使用调用。如果您在多个位置需要此结果,则最好将其分配给变量:

var prime = isPrime(number);
然后执行代码的其余部分:

if (prime == false)...
替换:

if(prime = false)
这不仅是因为使用赋值而不是比较,还因为未定义素数(它不会从该函数调用返回/创建全局变量
prime

替换为:

if (!isPrime(number)) {
现在,它不使用变量来存储isPrime调用的结果,而是直接使用调用。如果您在多个位置需要此结果,则最好将其分配给变量:

var prime = isPrime(number);
然后执行代码的其余部分:

if (prime == false)...
未指定任何变量。因此,在测试中从不指定素数,对于布尔表达式而言,未指定的变量将被视为false

应该是

var prime = isPrime(number);
你也在做一个你想做比较的作业

if(prime = false)
应该是

if(prime === false)
提示:如果你在做这些类型的测试,通常最好把赋值不能改变的东西放在左边(函数调用、常量等)。这样,如果你不小心把=而不是==或==放在左边,脚本就会出错

if(false === prime)
如果你不小心打字

if (false = prime)
你会得到

ReferenceError:左侧的分配无效

这是显而易见的,易于调试

由于这是一个简单的布尔开关,因此可以进行简单的“is not true”检查

if (!prime)
未指定任何变量。因此,在测试中从不指定素数,对于布尔表达式而言,未指定的变量将被视为false

应该是

var prime = isPrime(number);
你也在做一个你想做比较的作业

if(prime = false)
应该是

if(prime === false)
提示:如果你在做这些类型的测试,通常最好把赋值不能改变的东西放在左边(函数调用、常量等)。这样,如果你不小心把=而不是==或==放在左边,脚本就会出错

if(false === prime)
如果你不小心打字

if (false = prime)
你会得到

ReferenceError:左侧的分配无效

这是显而易见的,易于调试

由于这是一个简单的布尔开关,因此可以进行简单的“is not true”检查

if (!prime)

其实他们只是两个小逻辑故障

在函数isPrime()中定义“prime”-因此不能在函数外部使用它。 您尝试执行if(prime=false),它将值false赋给“prime”,而它除了破坏if之外对您的if没有任何作用

您需要在外部定义变量,因此请使用
prime=isPrime()

此外,您不需要检查“false”,因为“false”在任何情况下都没有真正意义。“true==false”?只需跳过这一点,询问是真还是假(prime)

或者,您可以在if条件下直接调用您的函数,如:

if(isPrime(number)){....

然后它会自动检查返回值。

实际上,它们只有两个小的逻辑故障

在函数isPrime()中定义“prime”-因此不能在函数外部使用它。 您尝试执行if(prime=false),它将值false赋给“prime”,而它除了破坏if之外对您的if没有任何作用

您需要在外部定义变量,因此请使用
prime=isPrime()

此外,您不需要检查“false”,因为“false”在任何情况下都没有真正意义。“true==false”?只需跳过这一点,询问是真还是假(prime)

或者,您可以在if条件下直接调用您的函数,如:

if(isPrime(number)){....

然后它会自动检查返回值。

你不需要写
===true
true
已经是
true
。同样,使用
。我觉得你的括号很冒犯:-/
if(prime=false)
应该是
if(prime==false)
或者更好的
if(!prime)
。一个
=
用于属性。除了语法问题,我认为你的素数测试实现也不正确。你说的是“如果数字可以被
I
整除,它就是素数”。这基本上是错误的。素数检查本身是否有缺陷?