Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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中变量i的作用域_Javascript - Fatal编程技术网

Javascript中变量i的作用域

Javascript中变量i的作用域,javascript,Javascript,这是我的html文件。 我得到的第一个警报的输出未定义,第二个警报的输出未定义。 为什么会这样?这里发生了什么?我相信这是因为我被提升了,但我的任务不是。因此,当您向i发出警报时,它指的是本地范围的i,它尚未被赋值 它最终是这样工作的: <html> <body> <script type= "text/javascript"> var i=10; function f(){ alert(i); if(!i){ var i= 20;

这是我的html文件。 我得到的第一个警报的输出未定义,第二个警报的输出未定义。
为什么会这样?这里发生了什么?

我相信这是因为我被提升了,但我的任务不是。因此,当您向i发出警报时,它指的是本地范围的i,它尚未被赋值

它最终是这样工作的:

<html>
<body>
<script type= "text/javascript">

var i=10;
function f(){
   alert(i);
   if(!i){
     var i= 20;
   }
   alert(i);
}
f();
</script>
</body>
</html>

您正在创建私有变量VARI=20;但之前你提醒我这么做没有定义…这就是为什么在javascript中你应该在顶部声明函数变量,因为javascript没有块作用域。哦,那么它又在函数内部的顶部声明了吗?你的代码最终是这样工作的:见编辑回答解决了谢谢
var i;
alert(i);
if(!i){
    i = 20;
}