在循环javascript中声明变量

gui*_*mus 0 javascript scope function while-loop

我不明白这段代码.

var timesTable;
while ((timesTable = prompt("Enter the times table", -1)) != -1) {.....}
Run Code Online (Sandbox Code Playgroud)

为什么有必要在之前声明变量?我试着这样做:

while ((var timesTable = prompt("Enter the times table", -1)) != -1) {.....}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.有什么问题?是关于范围的吗?

完整的计划是:

function writeTimesTable(timesTable, timesByStart, timesByEnd) {
        for (; timesByStart <= timesByEnd; timesByStart++) {
            document.write(timesTable + " * " + timesByStart + " = " + timesByStart * timesTable + "<br />");
            }
        }
    var timesTable;
    while ((timesTable = prompt("Enter the times table", -1)) != -1) {
        while (isNaN(timesTable) == true) {
            timesTable = prompt(timesTable + " is not a " + "valid number, please retry", -1);
        }
        document.write("<br />The " + timesTable + " times table<br />");
        writeTimesTable(timesTable, 1, 12);
    }
Run Code Online (Sandbox Code Playgroud)

谢谢你提前.

epo*_*och 5

你不能在while循环中定义变量,javascript中没有这样的构造;

在此输入图像描述

可以for循环中定义它的原因是因为for循环定义了初始化构造.

for (var i = 0; i < l; i++) { ... }
//     |           |     |
// initialisation  |     |
//            condition  |
//                    execute after each loop
Run Code Online (Sandbox Code Playgroud)

基本上,它不起作用,因为它是无效的代码.

但是,您可以var完全删除声明,但这基本上会使变量成为global错误的做法.

这就是你varwhile循环上方直接看到声明的原因