标签:scope global-variables javascript
以下两种声明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.一旦将其更改为声明变量的第一个版本,我的插件即可按预期工作,并且变量保持在其范围之内.
为什么是这样?
解决方法:
您是否错过了第一行的逗号?
如果您这样做:
var shadowBox = $(this)
startInfo = innerContainer.children('.start-info');
代替这个:
var shadowBox = $(this),
startInfo = innerContainer.children('.start-info');
startInfo将成为全局变量.
尝试将它们全部放在同一行上,看看会发生什么.
标签:scope,global-variables,javascript 来源: https://codeday.me/bug/20191122/2060325.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。