如果JavaScript具有功能级别范围,则将所有JS代码包装在
中$(document).ready(function() { ... });
足以防止全局命名空间污染?如果没有,我有更好的方法吗?
答案 0 :(得分:3)
这是一个好的开始,但您还需要确保不在函数中创建任何全局变量。设置严格模式(使用CircleMenu.java
)应该大部分都是这样做的。检查每一个"use strict";
的提及将继续进行。
在DOM准备好之前,它会产生延迟执行代码的副作用。这并不总是令人满意的。您可能想要使用简单的IIFE。
答案 1 :(得分:1)
是的,这已足够了。
因为JavaScript具有隐藏成员的功能范围,所以在其中声明的新成员将隐藏在全局范围内。
您需要确保声明它们(即var variableName
)在函数内部,或者它们将被提升到封闭范围(可能是全局的)。
如果是当然,直接将变量分配给全局对象会污染它(只是提到它是为了完整性)。
当Quentin回答时,使用use strict;
的严格模式将确保您没有未声明的变量,否则这些变量将附加到全局上下文。