Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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,我在代码中做了类似的事情,无法获得第二次警报。您是否在上面的代码中看到任何问题。您误用了函数语句上的标签。而不是 foo: function () { var bValue = false; boo(2, function () { bValue = true; if (bValue) alert("bvalue is true 1"); }); if (bValue) alert("bvalue is true 2"); } boo:

我在代码中做了类似的事情,无法获得第二次警报。您是否在上面的代码中看到任何问题。

您误用了函数语句上的标签。而不是

foo: function () {
  var bValue = false;

  boo(2, function () {
    bValue = true;
    if (bValue)
      alert("bvalue is true 1");
  });

  if (bValue)
    alert("bvalue is true 2");
}

boo: function (val, fn) {
  fn();
}
你应该写

boo: function (val, fn) {
  fn();
}

同样的问题也存在于
foo
。这将导致
语法错误
,并停止整个脚本的执行。幸运的是,如果您查看控制台,很容易捕捉到它。

boo是一个独立于foo的函数吗?它不需要自己的声明吗?它在哪里?在哪里定义了
boo
?如何像在
foo
中那样直接调用
boo()
boo
看起来它是封闭对象的属性。请发布有效的代码-这可能是所有否决票的原因。无论如何,范围划分很简单:为每个新函数上下文创建一个新的变量范围。但是,如果没有
var
(在给定的函数上下文中),变量将在父上下文范围内解析,依此类推。这并不能解释为什么第二个警报不执行。@VivinPaliath将执行第一个警报?不,我不这么认为。如果没有错误,两个警报都应该执行。OP的问题不是很清楚。我假设存在一个封闭对象,并且只有第二个警报没有执行(因为他没有提到关于第一个警报的任何内容)。如果他上面所说的是如何定义他的函数,那么你的答案是正确的,他必须复习JS语法。
function boo(val, fn) {
  fn();
}