我正在使用 javascript functions
的 javascript 文件,该文件不在闭包内。
显然,该功能可由控制台调用。
我知道添加闭包是最好的做法。但是,当我修补我发现如果我添加我的文件
window.myFunction = {}
该功能通过控制台变得不可用。 这样安全吗?
答案 0 :(得分:2)
Javascript(浏览器)中的所有全局变量/函数都是窗口对象的属性:
var x = "foo";
console.log(window.x); //foo
污染全局范围不是最佳实践,但如果您控制页面使用哪些脚本,则“不安全”。 (虽然我不建议使用全局变量)
如果您确实需要一个全局变量,请考虑使用您知道其他脚本不会使用的名称:
(function(window, undefined){
var privateVar = 5;
window.mySite = {
foo: "bar",
func: function(){
return "foo";
}
};
})(window);
console.log(window.mySite.func()); //"foo"
console.log(privateVar) //undefined
现在在IIFE(立即调用的函数表达式)之外,您可以使用window.mySite
或mySite
,而privateVar
将无法访问。
有关窗口对象here
的更多信息