首页 > 代码库 > JavaScript学习笔记6 之经典神坑题整理

JavaScript学习笔记6 之经典神坑题整理

本篇内容是关于容易出错题的整理,这些题也有利于对javascript的语法逻辑的理解,分析的内容仅供参考:

  1 <script>  2 /*1*/  3     var x=0 , y=0 , c=1;  4     function add(n) {n=n+1;}  5     x=add(c);  6     alert(x);//4  7     function add(n) {n=n+3; return n;}  8     y=add(c);  9     alert(y);//4 10  11     //执行过程 12     var x;//变量和函数都提前声明 13     var y; 14     var c; 15     // function add(n) {n=n+1;}//被覆盖,不会调用此函数 16     function add(n) {n=n+3; return n;}//函数名相同的函数都提前声明,后面的覆盖前面的 17     x=0;  18     y=0; 19     c=1; 20     x=add(c);//4 c作为形参传入函数, 21     alert(x);//4 22     y=add(c);//4 23     alert(y);//4 24  25  26 /*2*/ 27  28     var i=5,k,x;  29     k=++i;//先加后赋值 30     i=i++;//先赋值给i再+1,此时被赋值的i为6,复制后自+1 31     alert(k);//6  32     alert(i);//6 33  34  35  36 /*3、逗号操作符 */ 37    //逗号操作符中有多条语句时,执行后面语句 38     if (1,0) {//返回0 39         alert(‘123‘); 40     } else{ 41         alert(‘abc‘); 42     };//abc 43  44     if (0,-2) {//返回-2 45         alert(‘123‘); 46     } else{ 47         alert(‘abc‘); 48     };//123 49  50  51     var k=0; 52     for(var i=0, v=0; i<9, v<6; i++, v++){//返回v<6 53         k = i + v; 54     } 55     alert(k);//10 56  57     var k=0; 58     for(var i=0, v=0; i<6, v<9; i++, v++){//返回v<9 59         k = i + v; 60     } 61     alert(k);//16 62  63  64 /*4、异步事件*/ 65     for (var i = 0; i < 5; i++) { 66         setTimeout(function (){//异步代码 67             console.log(i);//打印 5个5 68         },0); 69     }; 70  71  72     for (var i = 0; i < 5; i++) { 73          74     }; 75     setTimeout(function (){//异步代码 76         console.log(i);//打印1个5 77     },0); 78  79  80     function fn(){ 81         console.log(‘first‘ ); 82         setTimeout(function (){//同步代码执行完之后才执行异步代码 83             console.log( ‘second‘ ); 84         },0); 85     } 86     for (var i= 0; i < 5; i++) { 87         fn(); 88     } 89     //first first first first first second second second second second 90     //前5个first是for循环执行5次打印事件 91     //后5个second是for循环执行5次,分别将异步事件分5次放在队列里面,最后执行异步事件 92  93 /*5、计时器是异步事件后执行问题*/ 94     var t = true,x = 5;//执行1 95     setTimeout(function (){//执行4、计时器进入异步队列,先不执行,最后执行 96       t = false; 97       alert(x); 98       x = 6; 99     },300);100     while (t){ x = 8; }//执行2-->此处陷入死循环101     alert(x);//执行3102     //死循环103 </script>

 

JavaScript学习笔记6 之经典神坑题整理