[英]Else statement within drag and drop function not working in javascript
[英]If statement within JavaScript function not working
我有以下功能
var VisibilityNewDevice = 1
function visibilityNewDevice() {
if (VisibilityNewDevice === 1) {
toggleVisibility('buttonPressesTable'),
toggleVisibility('IconMinimize'),
toggleVisibility('IconSync');
var VisibilityNewDevice = 0;
}
}
如果我调用visibilityNewDevice()
会返回undefined
返回值,并且不运行代码。 但是如果我这样运行
if (VisibilityNewDevice === 1) {
toggleVisibility('buttonPressesTable'),
toggleVisibility('IconMinimize'),
toggleVisibility('IconSync');
var VisibilityNewDevice = 0;
}
工作正常。 我很困惑为什么function
不起作用,但是当我运行if
语句时,它可以正常工作。
您的函数尝试再次定义变量。
你的
var VisibilityNewDevice = 0;
该函数的末尾应该是
VisibilityNewDevice = 0;
它不起作用,因为您调用了var VisibilityNewDevice = 0;
。 特别是var
。 这意味着if语句中的VisibilityNewDevice
没有引用您的外部变量,它引用了内部变量,该变量在执行时undefined
。
在if语句中删除var
应该可以正常工作
有了
var VisibilityNewDevice;
您已在函数内部声明了局部变量VisibilityNewDevice。 有了
var VisibilityNewDevice = 0;
您正在将该局部变量设置为零。 不是您需要的外层。
答案是简单地删除函数内部的
var
你写
var VisibilityNewDevice = 1
function visibilityNewDevice() {
// expecting: 1 === 1
if (VisibilityNewDevice === 1) {
...
var VisibilityNewDevice = 0;
}
}
JavaScript编译
var VisibilityNewDevice = 1
function visibilityNewDevice() {
var VisibilityNewDevice = undefined;
// undefined === 1
if (VisibilityNewDevice === 1) {
...
VisibilityNewDevice = 0;
}
}
注意到你的var
在顶部悬挂 ,这也同样适用于var
你里面创建function
。 当程序进入function
时,该提升的 var
将覆盖具有相同名称的所有全局var
。
另请参阅: JavaScript吊装说明
最后,当您创建私有var
时, 提升自己的身份并不是一个坏主意,因此您可以更好地遵循代码
function () {
var a, b, c, d;
}
这就是所谓的变量提升。
var x = 1;
function test(){
console.log(x);
var x = 3;
}
test();
这和
function test(){
var x;
console.log(x);
x = 3;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.