【发布时间】:2015-10-23 16:25:55
【问题描述】:
在https://developers.google.com/youtube/iframe_api_reference 给出的示例中,您可以看到没有使用标准的 css 选择器语法,而是使用了一种似乎只引用 id 的自定义字符串语法。
<div id="player"></div>
// note no 'var' and yet this will work in strict mode
// since 'player' is being implicitly grabbed from the dom
player = new YT.Player('player', ...);
这当然会产生泄漏全局变量的问题,无论 id 被命名为什么,这是我试图避免的事情(因为它为严格模式创建了一个漏洞,并且只是令人困惑和意外的行为)。
一种解决方法是将名称连字符连接起来,这样就无法从全局空间访问它
<div id="js-player"></div>
// now window['js-player'] is guarded from accidental access
var player = new YT.Player('js-player', ...);
但最重要的是,使用 id 只是一种不好的做法,我更愿意完全避免使用它们,因为类可以很好地工作并且没有奇怪的副作用。
【问题讨论】: