以下两种声明javascript变量的方法有什么区别?
版本1
var shadowBox = $(this);
var startInfo = shadowBox.children('.start-info');
var originalHeight = startInfo.height();
版本2
var shadowBox = $(this),
startInfo = shadowBox.children('.start-info'),
originalHeight = startInfo.height();
我只问这个,因为我在jquery插件中使用了第二个版本:
(function ($) {
$.fn.setUpShadowBox = function (options) {
options = $.extend({
boxSpeed: 750,
boxWidth: 998,
boxPosition: -40,
heightSpeed: 500,
scrollSpeed: 750
}, options);
return $(this).each(function () {
var shadowBox = $(this),
startInfo = shadowBox.children('.start-info'),
originalHeight = startInfo.height();
//rest of plugin code
});
};
});
但是当我在类选择器上使用它时它不得不循环遍历,它将变量看作是全局变量并仅使用已设置的最后originalHeight
。一旦我将其更改为声明变量的第一个版本,我的插件按预期工作,变量保持在其范围内。
为什么会这样?
答案 0 :(得分:3)
你错过了第一行的逗号吗?
如果你这样做:
var shadowBox = $(this)
startInfo = innerContainer.children('.start-info');
而不是:
var shadowBox = $(this),
startInfo = innerContainer.children('.start-info');
startInfo
将成为全局变量。
尝试将它们放在同一条线上,看看会发生什么。
答案 1 :(得分:0)
请查看Declaring javascript variables,这将非常有用。您的问题是var shadowBox = $(this)
,您在那里错过了一个逗号。