我在一个HTML文件中引用了多个JS文件。我知道这些JS文件中的变量和函数名称不应该重叠。但是,仅限于仅全局变量或所有变量(甚至是函数中的局部变量)?
答案 0 :(得分:1)
// These will go into global scope
nonKeywordedVarA = true; // just don't
var nonKeywordedVarC = true;
function leaky () {
nonKeywordedVarB = true;
}
// These will stay where you put them
function nonLeakyA () {
var functionScoped = true;
}
function nonLeakyB () {
var functionScoped = false;
}
if (true) {
let blockScoped = true;
}
if (true) {
let blockScoped = false;
}
leaky();
nonLeakyA();
nonLeakyB();
// Here we log global scope
console.log(typeof nonKeywordedVarA)
console.log(typeof nonKeywordedVarB)
console.log(typeof nonKeywordedVarC)
console.log(typeof functionScoped)
console.log(typeof blockScoped)

仅限于同一范围内的变量:
在没有var
,let
,const
关键字的情况下声明的变量(例如someVar = true)。这些直接泄漏到全局范围(例如window
对象)
在任何函数范围之外声明的变量(或let
的情况下的块范围)
简而言之,您的问题的答案是不要担心不同范围内的同名变量。