JavaScriptjQuery:覆盖变量-如何覆盖?更好的表现?
嘿,伙计们, 我不是一个铁杆的程序员,所以我不懂这些基本知识 假设我的页面上有多个(通过swfobject包含Youtube视频)。 所有这些对象都有一个唯一的ID,如ytplayer_12、ytplayer_2、ytplayer_56等 我需要使用jquery运行所有这些代码,并为它们添加一个EventListener 它工作得很好!我只是想知道我是否在JavaScriptjQuery:覆盖变量-如何覆盖?更好的表现?,javascript,jquery,performance,variables,Javascript,Jquery,Performance,Variables,嘿,伙计们, 我不是一个铁杆的程序员,所以我不懂这些基本知识 假设我的页面上有多个(通过swfobject包含Youtube视频)。 所有这些对象都有一个唯一的ID,如ytplayer_12、ytplayer_2、ytplayer_56等 我需要使用jquery运行所有这些代码,并为它们添加一个EventListener 它工作得很好!我只是想知道我是否在onYouTubePlayerReady()函数之外的正确位置声明了变量($ytid,ytid)?还是应该在函数内部声明变量?甚至在每个循环的
onYouTubePlayerReady()函数之外的正确位置声明了变量($ytid,ytid)?还是应该在函数内部声明变量?甚至在每个循环的内部
var $ytid = '',
ytid = '';
function onYouTubePlayerReady() {
$('object[id^="ytplayer_"]').each(function() {
$ytid = $(this).attr('id');
ytid = document.getElementById($ytid);
ytid.addEventListener("onStateChange", "foo");
});
};
我只是好奇在这种情况下什么更好,如果我现在做的是正确的?
感谢您提供的信息和帮助?在全局范围内声明变量是个坏主意。将它们移到功能范围中
function onYouTubePlayerReady() {
var $ytid = '', ytid = '';
$('object[id^="ytplayer_"]').each(function() {
$ytid = $(this).attr('id');
ytid = document.getElementById($ytid);
ytid.addEventListener("onStateChange", "foo");
});
};
你可以摆脱它们:
function onYouTubePlayerReady() {
$('object[id^="ytplayer_"]').each(function() {
this.addEventListener("onStateChange", "foo");
});
};
因为变量的值对于每个迭代都是唯一的,所以您肯定需要在循环中定义它们。尽管您可以让自己的生活更轻松一些,并且省去document.getElementById()
调用,因为这个
已经指向了您要查找的对象:
var ytid = this;
var $ytid = $(this).attr('id'); // only if you need the id for something other than instantiating the ytid variable
根据戈尔的建议,我使用了var
,不将变量设置为全局变量