摘要: 前言网上还没用发现有人对命名函数表达式进去重复深入的讨论,正因为如此,网上出现了各种各样的误解,本文将从原理和实践两个方面来探讨JavaScript关于命名函数表达式的优缺点。简单的说,命名函数表达式只有一个用户,那就是在Debug或者Profiler分析的时候来描述函数的名称,也可以使用函数名实现递归,但很快你就会发现其实是不切实际的。当然,如果你不关注调试,那就没什么可担心的了,否则,如果你想了解兼容性方面的东西的话,你还是应该继续往下看看。我们先开始看看,什么叫函数表达式,然后再说一下现代调试器如何处理这些表达式,如果你已经对这方面很熟悉的话,请直接跳过此小节。函数表达式和函数声明在EC 阅读全文
posted @ 2013-06-05 18:02 龙则 阅读(243) 评论(0) 推荐(0) 编辑
摘要: eval()如果你现在的代码中使用了eval(),记住该咒语“eval()是魔鬼”。此方法接受任意的字符串,并当作JavaScript代码来处理。当有 问题的代码是事先知道的(不是运行时确定的),没有理由使用eval()。如果代码是在运行时动态生成,有一个更好的方式不使用eval而达到同样的目 标。例如,用方括号表示法来访问动态属性会更好更简单:// 反面示例var property = "name";alert(eval("obj." + property));// 更好的var property = "name";alert(ob 阅读全文
posted @ 2013-06-05 16:55 龙则 阅读(273) 评论(0) 推荐(0) 编辑
摘要: //第一种变化的形式:var i, myarray = [];for (i = myarray.length; i–-;) { // 使用myarray[i]做点什么}补充一下对于单var和作用域原则可以改进为:var myarray = [];for (var i = myarray.length; i–-;) { // 使用myarray[i]做点什么}这样i只在循环内部起作用,如果有多段for循环代码这个i很可能是个隐患//第二种使用while循环:var myarray = [], i = myarray.length;while (i–-) { // 使用myarr... 阅读全文
posted @ 2013-06-05 16:20 龙则 阅读(319) 评论(0) 推荐(0) 编辑