Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:将执行返回表达式后的语句?_Javascript - Fatal编程技术网

JavaScript:将执行返回表达式后的语句?

JavaScript:将执行返回表达式后的语句?,javascript,Javascript,以下是我遇到的代码: var foo=1; function bar(){ foo=10; return; function foo(){} } bar(); alert(foo); 结果是1 只是不知道为什么 据我所知,第一行为窗口对象定义了一个全局变量“foo”,值为1,然后在bar函数中为foo赋值10,因为foo之前没有“var”,所以全局变量“foo”将赋值10。然后返回,函数的其余部分将不会执行 但它提醒1 在删除bar函数中的函数foo定义时,它将向10发

以下是我遇到的代码:

var foo=1;
function bar(){
    foo=10;
    return;
    function foo(){}
}
bar();
alert(foo);
结果是1

只是不知道为什么

据我所知,第一行为窗口对象定义了一个全局变量“foo”,值为1,然后在bar函数中为foo赋值10,因为foo之前没有“var”,所以全局变量“foo”将赋值10。然后返回,函数的其余部分将不会执行

但它提醒1


在删除bar函数中的函数foo定义时,它将向10发出警报

欢迎来到javascript吊装的神秘世界:阅读本文,您将获得启发:

简单回答:要使javascript工作如下:

hello();

function hello() {
    alert('hello');
}

Javascript首先将所有函数声明移动到代码的顶部,这样您就可以在定义任何函数之前调用它。我相信,如果有函数声明,foo不会变为10的原因是因为它的行为类似于var foo;。您正在本地定义一个函数,因此当它运行foo=10时;您只是在用值10覆盖本地定义的函数foo。

欢迎来到神秘的javascript世界:阅读本文,您将获得启发:

简单回答:要使javascript工作如下:

hello();

function hello() {
    alert('hello');
}

Javascript首先将所有函数声明移动到代码的顶部,这样您就可以在定义任何函数之前调用它。我相信,如果有函数声明,foo不会变为10的原因是因为它的行为类似于var foo;。您正在本地定义一个函数,因此当它运行foo=10时;您只是在用值10覆盖本地定义的函数foo。

它返回1的原因是foo=10位于函数栏内部

所以foo=10是一个局部变量,您必须调用它的函数才能更改foo变量

例如,如果您这样做,它将向10发出警报

var foo=1;
function bar(){
    foo=10;
    return;
    alert(foo);
}
bar();

它返回1的原因是因为foo=10位于函数栏内部

所以foo=10是一个局部变量,您必须调用它的函数才能更改foo变量

例如,如果您这样做,它将向10发出警报

var foo=1;
function bar(){
    foo=10;
    return;
    alert(foo);
}
bar();

好的,谢谢,伙计,我用JavaScript的提升功能得到了它。函数声明将foo作为bar函数的局部变量。好的,谢谢你,我是通过JavaScript的提升特性得到的。函数声明使foo成为bar函数的局部变量。谢谢,因此foo通过foo函数声明成为局部变量。谢谢,因此foo通过foo函数声明成为局部变量。