Образец кода A
var isPrime = function (num) {
//for(i = 1; i <= num; i++) {}
if(num === 2){
return true;
}
return false;
};
var sumPrimesUpTo = function (num) {
for(i = 1; i <= num; i++) {
console.log(isPrime(i));
}
};
sumPrimesUpTo(5);
Таким образом, мы имеем функцию, которая предположительно проверяет простое число и вторую функцию, которая суммирует простые числа до заданного числа. Когда вы запускаете это, он выводит.
false
true
false
false
false
Теперь у нас есть тот же пример кода, но с циклом for в isPrime uncommented.
var isPrime = function (num) {
for(i = 1; i <= num; i++) {}
if(num === 2){
return true;
}
return false;
};
var sumPrimesUpTo = function (num) {
for(i = 1; i <= num; i++) {
console.log(isPrime(i));
}
};
sumPrimesUpTo(5);
Эти результаты
false
false
false
Кажется, я не понимаю, почему цикл for меняет результат?
i
в глобальном масштабе, вы должны использовать let
чтобы i
привязан к циклу for
.
Вы также можете использовать var
но let
это лучший выбор, потому что он предоставит вам область, которую вы хотите, а также не позволит ей переназначить в этом блоке.
var isPrime = function (num) {
for(let i = 1; i <= num; i++) {}
if(num === 2){
return true;
}
return false;
};
var sumPrimesUpTo = function (num) {
for(let i = 1; i <= num; i++) {
console.log(isPrime(i));
}
};
sumPrimesUpTo(5);
i
в обеих функциях.let
(илиvar
) для объявления вашей переменной:for(let i = 1; i <= num; i++)