javascript";加上;结构生成未定义的变量
我有一个名为totalRevenue的对象,负责每月存储公司的累计收入javascript";加上;结构生成未定义的变量,javascript,Javascript,我有一个名为totalRevenue的对象,负责每月存储公司的累计收入 var totalRevenue = { jan : 147, feb : 290, mar : 400 }; 并非所有月份名称都出现在totalRevenue对象中&它们是在填充/估计各自的值时动态创建的。 在每个月初,我们使用算法估计当月的收入。像这样的事情: with(totalRevenue){ mar = mar - feb; // here we calculate pu
var totalRevenue = {
jan : 147,
feb : 290,
mar : 400
};
并非所有月份名称都出现在totalRevenue
对象中&它们是在填充/估计各自的值时动态创建的。
在每个月初,我们使用算法估计当月的收入。像这样的事情:
with(totalRevenue){
mar = mar - feb; // here we calculate pure mar revenue
feb = feb - jan; // here we calculate pure feb revenue
apr = mar - feb; // this is part one of the algo.
}
(我将与构造一起使用,以避免重复。)
现在我使用totalRevenue.apr
进行其余的algo计算。但是经过一些挑战,我得到了totalRevenue.apr=undefined
有人知道为什么吗?!正如我所期望的那样,它的值等于mar-feb
如果apr
不是totalRevenue
的属性,那么它不会被和纳入范围,您的代码将创建一个名为apr
的新全局属性。解释器无法知道给定名称是指全局名称,还是指最近的和块的未定义属性,因此假设它是全局名称。您可以确保totalRevenue
每个月都有一个属性,或者完全避免使用with语句。不鼓励将与
一起使用,原因如下:
不建议使用with语句,因为它可能会导致混淆错误和兼容性问题。有关详细信息,请参见下面“说明”部分中的“歧义对照”一段
此外,您不能按顺序计算值。一旦修复了with问题,您将获得错误的apr值。