这里最相关的答案没有提到let,这是块作用域,但是var,被吊起。对此我似乎无法得到明确的答案。
我有一个全局声明的变量,该变量初始化一次:
let firePaused = false;
然后是键盘处理程序中的一个函数,每次按下按钮时都会运行:
function actOnKeyPress() {
if (rightPressed) {
game.hero.rotate(game.hero.speed);
} else if (leftPressed) {
game.hero.rotate(-game.hero.speed);
}
if (!firePressed) {
firePaused = false;
}
if (firePressed && options.numberOfBullets > 0) {
if (!firePaused) {
fireBullet();
firePaused = true;
}
}
}
(与问题无关,但其目的是只允许玩家开火一次,在再次开火之前需要有一个按键事件)
根据干净代码的规则,我应该在函数顶部声明变量......但这意味着每次按下按钮时都会重新声明它。
这里说https://www.sitepoint.com/how-to-declare-variables-javascript/ https://www.sitepoint.com/how-to-declare-variables-javascript/
初始化:当你声明一个变量时,它会自动初始化
初始化,这意味着内存被分配给变量
JavaScript 引擎。
所以我每次都会创建一个全新的变量let使用关键字。
我是否应该在函数开头编写一个条件来检查是否firePaused
已经宣布了,如果不宣布呢?这似乎完全是矫枉过正。
如果您的变量是在全局范围内声明的,那么您是否使用并不重要let
or var
.
它们在功能上是相同的:
let myVar = 123;
function doStuff() {
console.log(myVar);
}
doStuff();
var myVar = 123;
function doStuff() {
console.log(myVar);
}
doStuff();
和...之间的不同var
and let
当您在块中声明它们时变得很重要:
if(true) {
var foo = 1;
}
if(true) {
let bar = 2;
}
console.log("var foo:", foo);
console.log("let bar:", bar);
如您所见,let
声明仅限于其包装块范围。这var
声明忽略块作用域。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)