繁体   English   中英

Javascript:如何在do while循环中访问函数范围的变量?

[英]Javascript: How can I access a function-scoped variable within a do while loop?

这样做会检查用户输入。 然而,控制台给我一个错误,说“大小没有定义”,我认为是因为大小在函数内,而while条件在函数之外

const newGrid = document.getElementById('new-grid');
newGrid.addEventListener('click', createGrid);

const main = document.querySelector('main');

function createGrid() {
    do {
        let size = parseInt(prompt("Please enter a number from 1 to 64", ""), 10);

        const numPx = (600 / size) - 2;
        let px = numPx + 'px';

        for (let i = 0; i < size; i++) {
            for (let j = 0; j < size; j++) {
                const div = document.createElement('div');
                div.setAttribute('class', 'grid');
                main.appendChild(div);
                div.setAttribute('style', `width: ${px}; height: ${px}`);
            }
        }

    } while(isNaN(size) || size > 64 || size < 1);

}

您可以在函数内但在do块之外声明变量( let size; ),然后分配它( size = parseInt(prompt("Please enter a number from 1 to 64", ""), 10);do阻塞。

你的选择是:

  • 将它更改为var(const和let是块作用域,vars是功能范围和提升,更多内容在这里
  • 并且更优雅 - 将let size更改为const size (因为您不必重新分配它)并将其移动到如此高度:

     function createGrid() { const size = parseInt(prompt("Please enter a number from 1 to 64", ""), 10); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM