由于某种原因,当我尝试运行此代码时,它显示为
错误taxableIncome未定义
和/或
y未定义
let taxableIncome = 80000;
if(taxableIncome >37000 && taxableIncome <80001);{
const y = taxableIncome - 37000;
}
console.log(y);
console.log(taxableIncome);
我似乎无法弄清楚。任何帮助,将不胜感激!谢谢! (很抱歉,如果这是一个愚蠢的问题,我昨天学习了基本的JavaScript:/) Code
答案 0 :(得分:1)
var
的作用范围是该功能。
let
和 const
的作用域为该块
这意味着y
的范围为if
。如果您使用过var
,就不会发生这种情况。
您可能希望使用let
而不是const
-然后可以在if
之外声明变量,但要在内部赋值if
。
可悲的是,您不能将其保留为const
,因为稍后您要更改其值(仅两行,但这没关系)。
这里是这样的:
let taxableIncome = 80000;
let y;
if(taxableIncome >37000 && taxableIncome <80001) {
y = taxableIncome - 37000;
}
console.log(y);
console.log(taxableIncome);
在上面的代码中,我还在if
之后但在{
打开之前删除了分号。
我可能会注意到这一点:如果您甚至不知道是否已设置变量,尝试获取变量的值可能并不明智。一切都取决于taxableIncome
,因此 I 将添加任何依赖变量y
且其值也位于if
内的代码- -那也可以解决您的问题!
答案 1 :(得分:0)
您只是在if函数中使用了const,所以如果if完成,它将不会在主作用域上声明,请尝试避免这种情况。
在if语句之外声明const
var x;
if(1==1){
x = 4;
}
console.log(x);
答案 2 :(得分:0)
问题在于范围。 const
具有块作用域,这意味着它只能在定义它的块内部访问。在您的代码段中,y
是在if
块中定义的。因此,您必须在块外声明y
。
let taxableIncome = 80000;
let y;
if(taxableIncome >37000 && taxableIncome <80001);{
y = taxableIncome - 37000;
}
console.log(y);
console.log(taxableIncome);
现在可以访问y
。请查看this link,以获取有关Javascript范围的更多信息。
答案 3 :(得分:0)
按照您当前的代码状态,y
将是未定义的代码。
这是因为您是在if
中声明它,并试图在{if}范围之外(尚未声明)的console.log
中声明它。 This thread gives a good read on scopes in JS,建议您看看。
我不知道在什么情况下无法定义taxableIncome
,但是有两种方法可以解决y
未被定义的问题:
如果仅在if
中使用它,则可以在其中声明它,这是绝对可以的,但是您的console.log和您在其中所做的所有操作也必须移至if中。所以它应该像这样:
let taxableIncome = 80000;
if(taxableIncome >37000 && taxableIncome <80001) {
const y = taxableIncome - 37000;
console.log(y)
// anything else you do with the y must be in here
}
console.log(taxableIncome);
更灵活的解决方案和您可能想要的解决方案是,在y
之前简单地声明if
。当然,由于稍后要为其设置值,因此它必须是let
而不是const
。
let taxableIncome = 80000;
let y;
if(taxableIncome >37000 && taxableIncome <80001) {
y = taxableIncome - 37000;
}
console.log(y);
console.log(taxableIncome);
此外,在另一条注释中,if语句后不需要分号。
答案 4 :(得分:0)
您的代码中有一些错误需要解决:
y
块中定义了if
。因此此变量将仅在此块内部可用,而在此块外部,您将得到undefined
错误,因为在该范围内未定义y
; ;
放在if
条件检查部分(第2行)的末尾。这自然不是一个错误,但似乎是一个坏习惯因此,您需要按以下方式重写代码:
let taxableIncome = 80000;
let y = 0;
if(taxableIncome >37000 && taxableIncome <80001){
y = taxableIncome - 37000;
}
console.log(y);
console.log(taxableIncome);
正如您提到的您是JavaScript的新手和新手一样,我认为您还需要阅读更多关于let和var之间的区别的信息,以便您可以明智地使用它们。
答案 5 :(得分:0)
您收到错误消息是因为 y 不在 if 条件块的范围内。正确的代码应如下所示:
let taxableIncome = 80000;
if (taxableIncome > 37000 && taxableIncome < 80001); {
const y = taxableIncome - 37000;
console.log(y);
}
console.log(taxableIncome);
您是否具有不希望更改或永远不会更改的值?就像Pi(3.14)的值一样,可以在JavaScript中将它们分配给const。 const的值不能通过重新分配来更改,如果尝试这样做,则会抛出错误。