以下两种声明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
设置的变量。一旦我将此更改为声明变量的第一个版本,我的插件按预期工作并且变量保持在其范围内。
为什么是这样?