变量在循环中显示为未定义,即使它在循环

时间:2015-06-06 01:54:01

标签: javascript jquery variables

所以,长话短说,我正在尝试为响应滑块做一个小脚本,我正在尝试找到文本最多的幻灯片,所以我知道哪一个是最大的幻灯片。然后我获得该幻灯片的高度并将滑块容器高度调整为幻灯片的高度。我创建了一个在$(document).ready()$(window).resize()上运行的函数。但是,我遇到了其中一个变量的问题。

问题在于:正如您所看到的,我在开始循环幻灯片之前定义了一个名为lastlength的变量,我将其默认值设置为零。然后,我检查上一张幻灯片的lastlength是否大于当前幻灯片的totallength,如果它不大,我将lastlength的值更改为{的值{1}}。

但是,我注意到条件语句根本没有返回任何东西,所以当我做totallength时,我注意到变量看起来是未定义的,尽管我在循环之前定义它。我尝试通过将我提供的参数复制到console.log(lastlength)并替换变量的名称来确保名称是正确的。

这是功能:

console.log

有谁知道为什么会这样?

提前致谢。

2 个答案:

答案 0 :(得分:3)

这是因为您稍后重新声明了lastlengthlastlength_owner

var lastlength = totallength;
var lastlength_owner = $(this).attr('slide_id');

这些声明会影响函数外的var变量。

只需在此处删除var个关键字即可。

答案 1 :(得分:0)

您在

重新定义它
var lastlength = totallength;

由于变量提升,这导致函数有效地以

开头
var lastlength;

摆脱var