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 为什么我的变量需要一个';var';声明,当它';它已经在var声明中了吗?_Javascript_Variables - Fatal编程技术网

Javascript 为什么我的变量需要一个';var';声明,当它';它已经在var声明中了吗?

Javascript 为什么我的变量需要一个';var';声明,当它';它已经在var声明中了吗?,javascript,variables,Javascript,Variables,如果一个mod可以帮助我更好地表达我的问题,我会很感激,因为如果不简单地提供一个例子,很难问这个问题。下面是我创建的一个函数: $("#myField").on('keyup', function(event){ var input = $(this), val = input.val(), inputGroup = input.parents('div.input-group') searchingIcon = $(inputG

如果一个mod可以帮助我更好地表达我的问题,我会很感激,因为如果不简单地提供一个例子,很难问这个问题。下面是我创建的一个函数:

$("#myField").on('keyup', function(event){
    var input = $(this), 
         val  = input.val(),
         inputGroup = input.parents('div.input-group')
         searchingIcon = $(inputGroup).find('i.auto-spinner'),
         button = $(inputGroup).find('span.input-group-btn > button.btn'),
         key = event.which,
         typingTimer; // This throws an error typingTimer is not defined

    //Clear typing timeout on keypress
    clearTimeout(typingTimer);
    //.... more code below.. not important
  });
如您所见,我喜欢在一个简单的var声明中声明我的var,后跟逗号,然而,在本例中,当我进入typingTimer时,我得到一个未定义的var错误,好像它在寻找变量,而不是定义一个空变量。如果我简单地把事情改成这样:

$("#myField").on('keyup', function(event){
    var input = $(this), 
         val  = input.val(),
         inputGroup = input.parents('div.input-group')
         searchingIcon = $(inputGroup).find('i.auto-spinner'),
         button = $(inputGroup).find('span.input-group-btn > button.btn'),
         key = event.which;
   var typingTimer; // All is well again...

    //Clear typing timeout on keypress
    clearTimeout(typingTimer);
    //.... more code below.. not important
  });

一切都会好起来的。这不是我第一次遇到这种现象,我也不知道它的原因。我如何定义不以(;)分隔的变量有一些限制吗?

您的一个声明
inputGroup=input.parents('div.input-group')后缺少一个逗号。
。由于所有其他声明也是一个表达式(后面有一个=号),因此它们本身就是有效的语句(将结果分配给全局变量)<但是,code>typingTimer没有这样的赋值,因此它导致了未定义的错误


添加缺少的逗号将解决此问题。

您的一个声明
inputGroup=input.parents('div.input-group')后缺少一个逗号。
。由于所有其他声明也是一个表达式(后面有一个=号),因此它们本身就是有效的语句(将结果分配给全局变量)<但是,code>typingTimer没有这样的赋值,因此它导致了未定义的错误


添加缺少的逗号将解决问题。

inputGroup
声明后缺少逗号,导致该行后面自动出现分号。因此,所有后续转让都不是声明;它们只是作业

通过显式编写隐式分号,我们可以更清楚地说明代码中的问题:

// declarations
var input = $(this), 
     val  = input.val(),
     inputGroup = input.parents('div.input-group');

// merely assignments
     searchingIcon = $(inputGroup).find('i.auto-spinner'),
     button = $(inputGroup).find('span.input-group-btn > button.btn'),
     key = event.which,
     typingTimer;
typingTimer
不存在,因此在作业左侧之外以任何方式使用它都是无效的。上面的其他赋值语句是可以接受的,因为它们创建隐式全局变量(因为您没有处于严格模式)


如果在
inputGroup
赋值后添加逗号,则后续的行是声明,正如您所期望的。

inputGroup
声明后缺少逗号,导致该行后面自动出现分号。因此,所有后续转让都不是声明;它们只是作业

通过显式编写隐式分号,我们可以更清楚地说明代码中的问题:

// declarations
var input = $(this), 
     val  = input.val(),
     inputGroup = input.parents('div.input-group');

// merely assignments
     searchingIcon = $(inputGroup).find('i.auto-spinner'),
     button = $(inputGroup).find('span.input-group-btn > button.btn'),
     key = event.which,
     typingTimer;
typingTimer
不存在,因此在作业左侧之外以任何方式使用它都是无效的。上面的其他赋值语句是可以接受的,因为它们创建隐式全局变量(因为您没有处于严格模式)


如果在
inputGroup
赋值后添加逗号,则后续的行是声明,正如您所期望的。

inputGroup
声明后缺少逗号,导致该行后面自动出现分号。因此,所有后续转让都不是声明;它们只是对现有变量的赋值(如果不存在该名称的变量,则为隐式全局变量)。我不确定是否应该将此作为一个拼写错误关闭,或者回答它,因为其他人可能会犯同样的拼写错误?“这不是我第一次遇到这种现象”:也许是时候改变你的VAR申报方式了?的确如此。这不是一种现象,这是错误的代码。您的
inputGroup
声明后缺少一个逗号,导致该行后自动出现分号。因此,所有后续转让都不是声明;它们只是对现有变量的赋值(如果不存在该名称的变量,则为隐式全局变量)。我不确定是否应该将此作为一个拼写错误关闭,或者回答它,因为其他人可能会犯同样的拼写错误?“这不是我第一次遇到这种现象”:也许是时候改变你的VAR申报方式了?的确如此。这不是一种现象,这是错误的代码。我想你的意思是
inputGroup=input.parents('div.input-group'),
,或者至少是
searchingIcon
@lcii之前的一个变量。在代码块中,我的意思是用一个等效的问题示例更清楚地说明问题,而不是提供解决方案。为清晰起见,我认为您的意思是
inputGroup=input.parents('div.input-group'),
或至少是
searching
@lcii之前的一个变量。在代码块中,我的意思是用一个等效的问题示例更清楚地说明问题,而不是提供解决方案。为了清晰起见进行了编辑。啊,一定是这样。我将不得不回去检查我的其他实例,但这可能是相同的事情。我有很长的var声明。啊,一定是这样。我将不得不回去检查我的其他实例,但这可能是相同的事情。我有很长的var声明。