По выполнении следующего кода, у нас в консоль выведется дважды true:
var booltestvar = true;
function testFunc1(){
otherFunc(booltestvar)
}
function otherFunc(booltestvar){
if (booltestvar === true){
console.log("true")
booltestvar = false;
}
else {console.log("Уже не true")}
}
testFunc1();
testFunc1();
otherFunc в параметре не нуждается: booltestvar итак видна внутри неё, так как определена на внешнем уровне. Поэтому если мы уберём параметр из otherFunc, второй вывод в косоль будет Уже не true.
Правильно ли я понял, что значение параметра функции, если оно есть, не может быть изменено внутри самой функции и использовано при повторном вызове функции? В любом случае, прошу Вас прокомментировать результаты эксперимента.
booltestvar внутри функции
function otherFunc(booltestvar){ ... }
полностью перекрывает/прячет внешнюю переменную. В вашем случае, параметр передается в функцию по значению, его изменение внутри функции никак не влияет на значение переменной, которая была использована в вызове функции.
booltestvar внутри функции
function otherFunc(){ ... }
это внешняя переменная, любые изменения - это ее непосредственные изменения.
Называйте переменные по-разному, и будет Вам счастье.
Если вопрос в изменении значения переменной Вы можете воспользоватся тем, что любая функция в данном примере вызывается в контексте window. А так как booltestvar ноходится так же в том же контексте можно сделать так.
var booltestvar = true;
function testFunc1(){
otherFunc(booltestvar)
}
function otherFunc(booltestvar){
if (booltestvar === true){
console.log("true")
this.booltestvar = false;
}
else {console.log("Уже не true")}
}
testFunc1();
testFunc1();
Но в любом случае, все таки не называть переменные и название параметров одинаково
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости