JavaScript函数中的If语句不起作用
我有以下功能JavaScript函数中的If语句不起作用,javascript,if-statement,Javascript,If Statement,我有以下功能 var VisibilityNewDevice = 1 function visibilityNewDevice() { if (VisibilityNewDevice === 1) { toggleVisibility('buttonPressesTable'), toggleVisibility('IconMinimize'), toggleVisibility('IconSync'); var
var VisibilityNewDevice = 1
function visibilityNewDevice() {
if (VisibilityNewDevice === 1) {
toggleVisibility('buttonPressesTable'),
toggleVisibility('IconMinimize'),
toggleVisibility('IconSync');
var VisibilityNewDevice = 0;
}
}
如果我调用visibilityNewDevice()
我将返回未定义的
,并且不运行代码。但是如果我像这样运行
if (VisibilityNewDevice === 1) {
toggleVisibility('buttonPressesTable'),
toggleVisibility('IconMinimize'),
toggleVisibility('IconSync');
var VisibilityNewDevice = 0;
}
它很好用。我不明白为什么
函数不起作用,但当我运行if
语句时,它工作正常。它不起作用,因为您正在调用var VisibilityNewDevice=0代码>。特别是var
。这意味着if语句中的VisibilityNewDevice
没有引用外部变量,而是引用内部变量,在执行时,未定义
删除if语句中的var
应该可以使此工作它不工作,因为您正在调用var VisibilityNewDevice=0代码>。特别是var
。这意味着if语句中的VisibilityNewDevice
没有引用外部变量,而是引用内部变量,在执行时,未定义
删除if语句中的var
应该通过
var VisibilityNewDevice;
var VisibilityNewDevice = 0;
您已经在函数中声明了局部变量VisibilityNewDevice。拥有
var VisibilityNewDevice;
var VisibilityNewDevice = 0;
您正在将本地变量设置为零。不是你需要的外部的。
var VisibilityNewDevice;
var VisibilityNewDevice = 0;
您已经在函数中声明了局部变量VisibilityNewDevice。拥有
var VisibilityNewDevice;
var VisibilityNewDevice = 0;
您正在将本地变量设置为零。不是您需要的外部变量。您的函数尝试再次定义变量
你的
var VisibilityNewDevice=0代码>
在函数的末尾应该是
VisibilityNewDevice=0代码>您的函数尝试再次定义变量
你的
var VisibilityNewDevice=0代码>
在函数的末尾应该是
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
。当程序进入功能时,挂起的var
将覆盖具有相同名称的任何全局var
另见:
最后,当您创建privatevar
时,将其提升到您自己的位置并不是一个坏主意,这样您就可以更好地遵循您的代码
function () {
var a, b, c, d;
}
答案是简单地删除函数中的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
。当程序进入功能时,挂起的var
将覆盖具有相同名称的任何全局var
另见:
最后,当您创建privatevar
时,将其提升到您自己的位置并不是一个坏主意,这样您就可以更好地遵循您的代码
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;
}
这就是所谓的变量提升
var x = 1;
function test(){
console.log(x);
var x = 3;
}
test();
这和
function test(){
var x;
console.log(x);
x = 3;
}
变量提升:始终注意声明的全局变量。变量提升:始终注意声明的全局变量。