Javascript 为什么初始值没有改变?

Javascript 为什么初始值没有改变?,javascript,Javascript,请帮忙,为什么初始值没有改变? *由于某种原因,如果我删除时钟“其他”一切工作正常 var值=0; 函数f(){ 如果(真){ 数值=15; } 否则{ var值=假; } console.log('changed value',value); } f(); console.log('value',value)使用var时,创建一个新变量。如果要更改现有变量,请删除var: var值=0; 函数f(){ 如果(真){ 数值=15; }否则{ 值=假; } console.log('chang

请帮忙,为什么初始值没有改变? *由于某种原因,如果我删除时钟“其他”一切工作正常

var值=0;
函数f(){
如果(真){
数值=15;
}
否则{
var值=假;
}
console.log('changed value',value);
}
f();

console.log('value',value)使用
var
时,创建一个新变量。如果要更改现有变量,请删除
var

var值=0;
函数f(){
如果(真){
数值=15;
}否则{
值=假;
}
console.log('changed value',value);
}
f();

console.log('value',value)使用
var
时,创建一个新变量。如果要更改现有变量,请删除
var

var值=0;
函数f(){
如果(真){
数值=15;
}否则{
值=假;
}
console.log('changed value',value);
}
f();

console.log('value',value)在您的代码上
var值=false是问题所在

更新代码

    var value = 0;

    function f() {
        if (true) {
            value = 15;
        }
        else {
            value = false;
        }
        console.log('changed value',value);
    }

    f();
    console.log('value ',value);

在您的代码上
var值=false是问题所在

更新代码

    var value = 0;

    function f() {
        if (true) {
            value = 15;
        }
        else {
            value = false;
        }
        console.log('changed value',value);
    }

    f();
    console.log('value ',value);
由于,var将声明移动到函数的顶部。因此,值不再是全局函数的引用,而是作用于函数的范围。因此,您的代码实际上如下所示:

var值=0;
函数f(){
var值;
如果(真){
数值=15;
}否则{
值=假;
}
console.log('changed value',value);
}
f();
console.log('value',value)由于,var将声明移动到函数的顶部。因此,值不再是全局函数的引用,而是作用于函数的范围。因此,您的代码实际上如下所示:

var值=0;
函数f(){
var值;
如果(真){
数值=15;
}否则{
值=假;
}
console.log('changed value',value);
}
f();

console.log('value',value)
var值=false
注意,这就是几乎所有现代JavaScript都使用
let
而不是
var
的原因之一<代码>变量
有很多令人困惑的行为,会导致像这样奇怪的错误。请参阅和。感谢大家的帮助<代码>var值=假
注意,这就是几乎所有现代JavaScript都使用
let
而不是
var
的原因之一<代码>变量
有很多令人困惑的行为,会导致像这样奇怪的错误。请参阅和。感谢大家的帮助!!这是允许的,这就是代码运行的原因。这并没有达到他们的预期。你们只是在另一个问题上说了同样的话,别再说了。。。它是允许的…它是允许的,这就是代码运行的原因。这并没有达到他们的预期。你们只是在另一个问题上说了同样的话,别再说了。。。这是允许的……有趣;在原始代码中,即使只有
false
版本具有
var
声明,并且从未实际命中(因为
if(true)
true
),仍会发生提升?酷:)我以前从未见过这个术语;很高兴知道,这也是使用
let
const
vs
var
的另一个原因。谢谢!这很有帮助!=)有趣;在原始代码中,即使只有
false
版本具有
var
声明,并且从未实际命中(因为
if(true)
true
),仍会发生提升?酷:)我以前从未见过这个术语;很高兴知道,这也是使用
let
const
vs
var
的另一个原因。谢谢!这很有帮助!=)