浏览器如何读取JavaScripts,哪个应该放在第一位(设置在顶部)和#xFF1A;事件功能?或子功能
一个简单的问题 我有一个web项目,包括多个Java脚本 JS: (1) ,(2)在一个javascript文件中,哪一个应该排在第一位?如果浏览器先读取函数,它是否将函数存储在内存中,并在扫描事件时调用该函数 在某些情况下,在多javascript中定义相同的函数。e、 g浏览器如何读取JavaScripts,哪个应该放在第一位(设置在顶部)和#xFF1A;事件功能?或子功能,javascript,jquery,Javascript,Jquery,一个简单的问题 我有一个web项目,包括多个Java脚本 JS: (1) ,(2)在一个javascript文件中,哪一个应该排在第一位?如果浏览器先读取函数,它是否将函数存储在内存中,并在扫描事件时调用该函数 在某些情况下,在多javascript中定义相同的函数。e、 g prm.add_endRequest(function() { fn1(); fn2(); }); $(document).ready(.......) 我应该复制函数名并在每个js文件中定义每个组件吗
prm.add_endRequest(function() {
fn1();
fn2();
});
$(document).ready(.......)
我应该复制函数名并在每个js文件中定义每个组件吗。
或者将函数声明保存在一个文件中,并调用子函数组合函数?以以下方式定义的函数:
function fooBar(){}
被“提升”到当前范围的顶部。这意味着它们在当前范围内始终可用,即使它们是在文件末尾定义的
如果您定义了如下函数,则不成立:
var fooBar = function(){};
这些功能未被提升,必须在使用前进行定义
应该注意的是,在您的特定示例中,keyUpFunction
仅在触发keyup事件后才会被调用。这也意味着页面上的所有javascript都已经被计算过了,因此不管怎样,keyup函数都已经被定义(解析)了
编辑:更明确地说,第一个示例可以:
doSomething('hello world');
function doSomething(str){
console.log(str);
}
但是,这会给您带来以下问题:
doSomething('hello world');
var doSomething = function(str){
console.log(str);
}
@马特的回答很好地涵盖了这个功能 为避免多个文件中的函数名冲突,请将内容包装在立即调用的函数表达式中,例如:
其中声明的任何变量或函数都将被限制在该范围内。我花了几分钟才记住关键字“起重机”。我一直在想-是“提升”,不是,是“提升”,不是,该死,有人会把我打败!
doSomething('hello world');
var doSomething = function(str){
console.log(str);
}
(function() {
// put your variables functions here
...
// register event handlers
})();