Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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_Variables_Global Variables_Var - Fatal编程技术网

Javascript 这是什么意思?引擎故障还是什么?

Javascript 这是什么意思?引擎故障还是什么?,javascript,variables,global-variables,var,Javascript,Variables,Global Variables,Var,可能重复: 大家好 我想问一个陌生人。这是代码 var a = "defined"; function f() { alert(a); var a = 5; } f(); var a=“已定义”; 函数f(){ 警报(a); var a=5; } f(); 警报“未定义” 有谁能解释一下我为什么变得“未定义” Fatih..我想这就是所谓的JavaScript。请观看此视频,了解更多信息及其解决方案: 要使其工作,您必须删除var关键字表单变量a: var a = "define

可能重复:

大家好

我想问一个陌生人。这是代码

var a = "defined"; function f() { alert(a); var a = 5; } f(); var a=“已定义”; 函数f(){ 警报(a); var a=5; } f(); 警报“未定义”

有谁能解释一下我为什么变得“未定义”

Fatih..

我想这就是所谓的JavaScript。请观看此视频,了解更多信息及其解决方案:

要使其工作,您必须删除
var
关键字表单变量
a

var a = "defined";
function f() {
   alert(a);
   a = 5;
}
f();

因此,基本上,这是一个可变范围的问题。删除
var
关键字的行为使变量全局可用。因此,这次没有出现错误。

在函数中,您将获得一个新的作用域

函数中的
var a
声明了一个局部变量
a
,它掩盖了全局变量

a
的分配发生在之后(警报之后),因此在此之前
a
是未定义的


令人困惑的是,不管您是否在函数的顶部或任何其他位置(甚至可以在if中)有
var a
声明,这都无关紧要。效果是一样的:它为该范围声明了一个变量(即使对于位于声明之前的代码也是有效的)。这就是为什么jslint建议在顶部声明所有局部变量。

基本上是的精确副本,但是,删除
var
也可能做不到您想要的,因为现在您正在处理全局变量。(但这并不令人惊讶)有趣。这是我不知道的事情,我很惊讶我还没有意识到这一点。谢谢你的链接。