我的文件顶部附近有一些代码,如下所示:
var my12proddate = JSON.parse(sessionStorage.getItem('my12prodDate'));
var mytstprod = my12proddate[0];
if (mytstprod == null) {
myupdatedproddate();
}
代码中的下一步是:
var num = size;
function myupdatedproddate() {
for (var a = 0; a < num; a++) {
var dt = new Date(startmothnyear);
dt.setMonth(dt.getMonth() - a);
var newww = dt.toString()
var monthNum = months[newww.substring(4, 7).toLowerCase()];
var yearNum = newww.substring(24, 28);
var monthandyearNum = monthNum + "/" + yearNum;
monthsupdated[a] = monthandyearNum;
}
}
当我运行此脚本时,它会给我myupdatedproddate is undefined
错误。
为什么我收到此错误?
答案 0 :(得分:3)
在正常情况下,这没关系,因为您正在使用函数声明。这有效,例如:
foo();
function foo() {
console.log("Hi there");
}
函数声明在进入作用域时处理,在执行任何逐步执行代码之前,只要它们位于相同的代码编译单元中(在浏览器上,这是一个script
元素)。
因此,如果它不起作用,则告诉我们该函数在与其调用的代码不同的范围中声明,或者在不同的代码编译单元中声明。
这失败了,例如:
foo();
$(document).ready(function() {
function foo() {
console.log("Hi there");
}
});
...因为foo
包含在我们给ready
的函数中,所以它不存在于它之外,我们无法调用它。
同样,这也失败了:
<script>
foo();
</script>
<script>
function foo() {
console.log("Hi there");
}
</script>
...因为声明在我们尝试使用它的之后的代码编译单元中,所以当我们尝试使用它时它还不存在。
因此,您需要查看声明函数的位置以及使用它的位置,并确保只在实际可以看到它的位置使用它。
答案 1 :(得分:0)
我认为你会发现如果你在其下面添加缺少的分号,那么你应该说的其他内容是否正常。
var num = size;
function myupdatedproddate() {
for (var a = 0; a < num; a++) {
var dt = new Date(startmothnyear);
dt.setMonth(dt.getMonth() - a);
var newww = dt.toString(); // <--- add this here
var monthNum = months[newww.substring(4, 7).toLowerCase()];
var yearNum = newww.substring(24, 28);
var monthandyearNum = monthNum + "/" + yearNum;
monthsupdated[a] = monthandyearNum;
}
}
答案 2 :(得分:-1)
我刚注意到我不再需要在我的js文件中使用此代码
var my12proddate = JSON.parse(sessionStorage.getItem('my12prodDate'));
我评论出来并且有效。
感谢您的努力..