javascript知识点
2014-12-22 18:07
183 查看
1、Javascript引擎首先会扫描所有的变量声明,然后将这些变量的声明移动到最顶部。所以:
但是如果你给变量赋值了,这个时候就完全相反了。
来自汤姆大叔的5个题目
1、找出数字数组中的最大元素(使用Math.max函数)
分析:因为函数的调用只有在其执行的时候才会去真正去调用它内部的语句,这个时候的for循环已经执行完全,i=maxLen-1,所以每次调用的时候其实都是返回array[maxLen-1]的值,所以返回的是5,如果for循环的最大值为maxLen-1,这时候for循环执行完毕,i=maxLen了,此时再打印result[0](),肯定打印的是"undefined"。
解决方法:利用闭包解决,什么是闭包?
<script type="text/javascript"> alert("a" in window);//true var a = 1; </script>2、所有函数的声明都在代码执行之前已经完成了声明:所以
<script type="text/javascript"> alert(add(1,2)); //3 function add(x,y){ return x+y; } </script>3、函数声明会覆盖变量声明,但是不是覆盖变量赋值。
<script type="text/javascript"> function add(x,y){ return x+y; } var add; alert(typeof add); //function </script>所以上面的例子打印function.
但是如果你给变量赋值了,这个时候就完全相反了。
<script type="text/javascript"> function add(x,y){ return x+y; } var add = 1; alert(typeof add); //number </script>
来自汤姆大叔的5个题目
1、找出数字数组中的最大元素(使用Math.max函数)
<script type="text/javascript"> var array = [1,2,3,4,10,2,5]; alert(Math.max.apply(this,array)); </script>2、转化一个数字数组为function数组,每个数组弹出相应的数字。
<script type="text/javascript"> var array = [1,2,3,4,10,2,5], maxLen = array.length, result = []; var i = 0; for(;i<maxLen-1;i++) { result[i] = function(){ return array[i]; } } alert(result[0]()); </script>首先分析下上面这种方式为什么不行,且不管下标何如,都打印5,且for循环中最大值为maxLen-2,而不是maxLen-1。
分析:因为函数的调用只有在其执行的时候才会去真正去调用它内部的语句,这个时候的for循环已经执行完全,i=maxLen-1,所以每次调用的时候其实都是返回array[maxLen-1]的值,所以返回的是5,如果for循环的最大值为maxLen-1,这时候for循环执行完毕,i=maxLen了,此时再打印result[0](),肯定打印的是"undefined"。
解决方法:利用闭包解决,什么是闭包?
<script type="text/javascript"> var array = [1,2,3,4,10,2,5], maxLen = array.length, result = []; var i = 0; for(;i<maxLen;i++) { (function(index){ result[index] = function(){ return array[index]; } })(i); } alert(result[5]()); </script>
相关文章推荐
- (转)javascript javascript常用知识点总结
- JavaScript小知识点集锦(不段更新中)
- JavaScript值得注意的小知识点
- JavaScript一些小知识点的记录2之函数
- javascript和jQuery知识点总结
- JavaScript一些小知识点的记录2之函数2
- JavaScript值得注意的小知识点
- JavaScript关键知识点汇总(2):Array
- JavaScript一些小知识点的记录1
- javascript 正则表达式知识点总结:(转并整理)
- javascript Excel操作知识点
- javascript常用知识点
- javascript全面总结(可能别人看的有点乱,不过多看几遍就习惯了,每个*是一个知识点集合)
- javascript Excel操作知识点
- javascript常用知识点总结
- javascript知识点收藏
- javascript 知识点
- JavaScript对象知识点总结
- javascript和jQuery知识点总结
- javascript和jQuery知识点总结