我写了很多bookmarklet,并将它们放在meta-bookmarklet(目前为止> 20kb)中:
var uGlY_vArIaBlE=(function(){
var d=document;
var f1=function(){};
var f2=function(){};
…
… /* lot of code here */
…
var f50=function(){};
});
uGlY_vArIaBlE();
我可以假设f50
会'{知道'd=document
和f1
一样快吗?浏览器如何实际读取/解释脚本(从缓存注入或加载)?我似乎没有遇到任何重大延误。您可以分享的任何提示。
答案 0 :(得分:2)
在同一级别的所有功能中,您的变量同样快。只有内部函数会失去一些速度,例如:
function f32(){
function f33(){
// to get d, we have to walk up 2 levels
// so it is a bit slower to get it then
// it is for f32
};
};
更好的概念是:
(function( window, undefined ){ // <- no need to name it (can be anonymus)
var d = window.document;
function f1(){};
function f2(){};
// .............
function f50(){};
})( window ); // <- it will be executed immediately
文档和窗口都会更快,因为它们是局部变量。
答案 1 :(得分:0)
长脚本应该导致的唯一延迟是加载和解析。从磁盘加载脚本需要更长的时间(因为文件大小更大),解析脚本需要更长的时间才能执行(因为需要解析更多的代码)。
除此之外,你不应该有任何缓慢(除非你的算法需要优化,但这是一个完整的其他主题)