Javascript 为什么就这么过去了?我想知道更多我需要解释的事情
我写了另一个答案。但我不明白这一点 。。虽然我运行chrome调试器,但我不能很好地理解Javascript 为什么就这么过去了?我想知道更多我需要解释的事情,javascript,if-statement,scope,closures,Javascript,If Statement,Scope,Closures,我写了另一个答案。但我不明白这一点 。。虽然我运行chrome调试器,但我不能很好地理解 result = true // is passed 我不太明白。我提交了另一个答案,但我想知道为什么它只是通过。 我需要解释更多,我想从这个代码修复 function isPrime(num) { let result; for(let i = 1 ; i <= num ; i++) { if(num[i] / num[i] === 1 && num[i] / num[i]
result = true
// is passed
我不太明白。我提交了另一个答案,但我想知道为什么它只是通过。
我需要解释更多,我想从这个代码修复
function isPrime(num) {
let result;
for(let i = 1 ; i <= num ; i++) {
if(num[i] / num[i] === 1 && num[i] / num[i] === num[i]){
result = true
} else {
result = false
}
}
return result
}
debugger;
let output = isPrime(2);
console.log(output); // --> true
output = isPrime(6);
console.log(output); // --> false
output = isPrime(17);
console.log(output); // --> true
函数isPrime(num){
让结果;
对于(设i=1;i为真)
输出=iPrime(6);
console.log(输出);//-->false
输出=iPrime(17);
console.log(输出);//-->true
根据维基百科
素数(或素数)是大于1的自然数,它不是两个较小的自然数的乘积。例如,5是素数,因为将它写成乘积的唯一方法,1×5或5×1,涉及5本身
函数isPrime(num){
//步骤1:过滤器1,负数和十进制数
如果(num==1 | | num<0 | | num%1!==0){
返回false;
}
//步骤2:将num除以较小的数字
设除数=num-1;
while(除数>1){
常数余数=num%除数;
//如果num可以除以一个较小的数,那么它不是素数
如果(余数==0){
返回false;
}
除数-=1;
}
//num是素数
返回true;
}
设输出=isPrime(2);
console.log(输出);//-->true
输出=iPrime(6);
console.log(输出);//-->false
输出=iPrime(17);
console.log(输出);//-->true
输出=iPrime(1);
console.log(输出);//-->false
输出=isPrime(-12);
console.log(输出);//-->false
输出=iPrime(78.25);
console.log(输出);//-->false
输出=iPrime(-12.5);
console.log(输出);//-->false
这显然不是确定一个数字是否为素数的有效函数。结果在i的每次迭代中都会被覆盖,这意味着只有最后一次迭代/测试才重要。这不是right@ControlAltDel被覆盖…为什么被覆盖?为什么会发生这种情况?“为什么被覆盖过度?”由于您在每次迭代中都会更改有关调试时观察到的行为的结果,因此在屏幕截图中,您处于循环的第一次迭代中(即i
设置为1
)。执行在第7行停止,这表示正在执行else
块。这意味着跳过了第5行上的赋值,这就是为什么result
仍然包含值undefined
。在调试器中执行另一步后,一旦执行第7行中的语句,result
将具有值efalse
已分配。
function isPrime (num) {
// step 1: filter 1, negative numbers and decimal numbers
if (num === 1 || num < 0 || num % 1 !== 0) {
return false;
}
// step 2: dividing num by smaller numbers
let divisor = num - 1;
while (divisor > 1) {
const remainder = num % divisor;
// if num is divisible by dividing a smaller number, it's not a prime
if (remainder === 0) {
return false;
}
divisor -= 1;
}
// num is a prime
return true;
}
let output = isPrime(2);
console.log(output); // --> true
output = isPrime(6);
console.log(output); // --> false
output = isPrime(17);
console.log(output); // --> true
output = isPrime(1);
console.log(output); // --> false
output = isPrime(-12);
console.log(output); // --> false
output = isPrime(78.25);
console.log(output); // --> false
output = isPrime(-12.5);
console.log(output); // --> false