Javascript 在while循环定义中使用var关键字

Javascript 在while循环定义中使用var关键字,javascript,while-loop,var,Javascript,While Loop,Var,在JavaScript for循环中,我可以在循环定义中使用var关键字,如下所示: for (var i=0; i<10; i++) ... 我的问题是关于while循环。我无法在while循环定义中声明变量,如下所示: while((var match = re.exec(pattern)) != null) ... 我必须在while循环之外使用var关键字 var match; while((match = re.exec(pattern)) != null) ... 我做错

在JavaScript for循环中,我可以在循环定义中使用
var
关键字,如下所示:

for (var i=0; i<10; i++) ...
我的问题是关于while循环。我无法在while循环定义中声明变量,如下所示:

while((var match = re.exec(pattern)) != null) ...
我必须在while循环之外使用
var
关键字

var match;
while((match = re.exec(pattern)) != null) ...
我做错什么了吗

我做错什么了吗

不,你不是。这就是语法的定义方式。
while
循环只接受表达式,而
for
循环也可以与
var
声明一起使用

见:


这是正确的,你在while循环之前声明变量,而不是在它里面。你在说什么“最糟糕的符号是在函数体中声明i变量”。我很确定javascript会将所有变量提升到函数体的开头忘记“javascript提升变量”部分,这是初学者的错误。我想a在中给出了正确/简要的概述。我不明白你在说什么。您是说javascript不会将变量提升到作用域的顶部?我只是想确认一下
var match;
while((match = re.exec(pattern)) != null) ...
while ( Expression ) Statement
for ( ExpressionNoIn_opt; Expression_opt ; Expression_opt ) Statement
for ( var VariableDeclarationListNoIn; Expression_opt ; Expression_opt ) Statement