我想压缩我的2000多行javascript,我已经测试了http://dean.edwards.name/packer/和http://closure-compiler.appspot.com/home.但在这两种情况下,压缩脚本都会给我错误。一个错误的例子是jQuery(document).Daisnotafunction。为什么优化后我的脚本不工作?我可以做些什么来优化/压缩我的脚本? 最佳答案 确保每个JavaScript文件的开头都有一个分号。我知道这很奇怪,但这就是原因:你可能在一个文件中有这样的东西:functions
有没有一种快速有效的方法可以在canvas中移动大量对象?基本上,如果有大约1000个对象,并且我想一次移动所有对象以模拟滚动,则通过调用drawImage()1000多次来重绘每个对象会非常慢。有没有办法优化这个?我有一个问题的示例链接(而且只有100个对象):http://craftyjs.com/isometric/ 最佳答案 由于canvas不提供快速低级位图复制,因此很难在多个图层中执行操作,例如一次滚动整个背景然后只渲染边缘。那你能做什么?简而言之,什么都没有。尤其是在滚动时,当你有一个或多或少的静态背景时,你肯定可以用
我发现自己经常做的操作如下:OneTwoThreevar$allLi=$('li');$allLi.click(function(){$allLi.removeClass('current');$(this).addClass('current');});有没有办法通过组合$allLi和$(this)并使用toggleClass来压缩它?谢谢! 最佳答案 Jonathan的解决方案应该可以正常工作,但我想提出一个不同的解决方案。与其取消设置所有元素然后选择当前元素,为什么不只跟踪当前元素并只对其执行操作?OneTwoThree(fu
我正在为一个我无法控制的网站编写一个插件,除了我能够向它添加JS代码(实际上它是由一个过时的wysiwyghtml编辑器生成的一组html文档)。出于我的目的,我需要获取以特定方式命名的所有变量。名称始终以zzz开头并以数字结尾,从zzz1到zzz999999。现在我正在做以下事情:for(vari=1;i我想知道是否有比遍历一百万个undefinedvariable更有效的方法来检测这些变量。 最佳答案 您可以遍历所有顶级变量(window的属性),然后测试它们的名称是否与某些正则表达式模式匹配。像以前一样收集匹配的变量。varp
我正在使用一种可转换为JavaScript的语言工作。为了避免一些堆栈溢出,我通过将某些函数转换为for循环来应用尾调用优化。令人惊讶的是转换并不比递归版本快。http://jsperf.com/sldjf-lajf-lkajf-lkfadsj-f/5递归版本:(functionrecur(a0,s0){returna0==0?s0:recur(a0-1,a0+s0)})(10000,0)尾调用优化后:ret3=void0;a1=10000;s2=0;(function(){while(!ret3){a1==0?ret3=s2:(a1_tmp$=a1-1,s2_tmp$=a1+s2,a
例如在搜索表单中,当用户输入一些文本时,AJAX请求应在每个keyup事件上发送,搜索键作为查询字符串。搜索键将是输入框中的值。如果用户输入“ABCD”,在这种情况下,前3个AJAX请求应该被终止/取消,因为在第4个AJAX请求中,搜索键将是“ABCD”$(document).ready(function(){$("#searchInput").keyup(function(){ajaxSearch($("#searchInput").val());});});在keyup事件上,我调用以下“ajaxSearch()”函数。functionajaxSearch(searchKey){$
这个问题与其说是视差,不如说是滚动事件。我对我的项目最关心的是视差滚动效果是平滑的而不是抖动的。那么我的问题是,某些属性的动画/滚动效果是否比其他属性更好?例如,background-position是否比在滚动时调整margin-top效果更好。 最佳答案 我不确定某些属性在设置动画时是否会比其他属性产生更少的开销,但如果有人发布有关该主题的一些有用信息,我将非常感兴趣。话虽这么说,我确实知道一些可以帮助提高性能的事情。设置position:absolute将元素从页面的常规流中移除,因此不需要在动画时重绘整个页面。positio
着眼于提高我的jquery选择器的性能。那么有什么技巧或文章可以作为最佳性能jquery选择器吗?例如选择一个div的id。我可以在网上的任何地方提供html并比较我可以用来选择所需元素的不同选择器。 最佳答案 您可以在这里比较选择器的性能:http://jsperf.com/只需设置您的HTML,包括jQuery并将您要比较的每个选择器作为测试用例放置。许多规则here仍然适用,但是游戏在jQuery1.4.3+中发生了一些变化,之后Sizzle(jQuery的选择器引擎)将使用querySelectorAll()在支持它的浏览器
我正在尝试验证一个大型联系表单。当用户忘记必填输入字段时,我会用默认文本填充空变量。我目前的解决方案使用九个if声明。有没有更好的方法来使用更少的代码?html:varonoma=$("#fname").val();vareponimo=$("#lname").val();varemail=$("#email").val();vardiefthinsi=$("#address").val();varpoli=$("#city").val();varxora=$("#country").val();varkatigoriaDiafimisis=$("#AdCategory").val()
我在循环中使用Math.ceil(Math.abs(x))。谁能实现这个操作的任何优化?(按位还是什么?)欢迎您在jsperf.com进行基准测试 最佳答案 根据webkitJavaScriptCore,Math.abs并没有变得更简单caseMathObjectImp::Abs:result=(arg不过ceil使用的是C的ceil函数caseMathObjectImp::Ceil:result=::ceil(arg);所以在JSpref上测试http://jsperf.com/math-ceil-vs-bitwise按位更快测试