本篇内容是关于容易出错题的整理,这些题也有利于对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);//执行3
102 //死循环
103 </script>