gpt4 book ai didi

javascript - 在循环中仅声明一次变量的最快方法是什么?

转载 作者:行者123 更新时间:2023-11-28 13:21:44 24 4
gpt4 key购买 nike

我有一个函数,它由 setInterval(); 循环

我不想声明全局变量,那么在循环内声明它们的最快方法是什么,但仅声明一次

这就是我正在做的事情。称为 i 的全局变量 :( grrr

var i = 0, //If I declare this in the function my code wont work because I is always 0.
i2 = 0;
var createInnerBlock = function(){
var block = document.createElement("DIV"),
x = block.style,
w = window.innerWidth;
x.height = "150px"
x.width = "150px"
x.backgroundColor = "#FA6900"
x.borderRadius = "15%"
x.left = 5+ i;
x.top = 5 + i2;
i+=160;
x.position = "absolute"
document.body.appendChild(block)
if(i>=w){
i2+=160;
i=0;
if(i2>=window.innerHeight){
clearInterval(drawer);
}
}
}
var drawer = setInterval(createInnerBlock,10);

一定有一个简单的方法,例如 var i = 0 || undefined 我不想写整个 if 语句。

谢谢!

最佳答案

避免全局变量的一个好方法是定义 IIFE - 立即调用函数表达式。

(function(){

var i = 0, //If I declare this in the function my code wont work because I is always 0.
i2 = 0;
var createInnerBlock = function(){
var block = document.createElement("DIV"),
x = block.style,
w = window.innerWidth;
x.height = "150px"
x.width = "150px"
x.backgroundColor = "#FA6900"
x.borderRadius = "15%"
x.left = 5+ i;
x.top = 5 + i2;
i+=160;
x.position = "absolute"
document.body.appendChild(block)
if(i>=w){
i2+=160;
i=0;
if(i2>=window.innerHeight){
clearInterval(drawer);
}
}
}
var drawer = setInterval(createInnerBlock,10);
}());

这里有完全相同的代码,但变量不在全局范围内,而是在该函数范围内。

关于javascript - 在循环中仅声明一次变量的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32413183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com