zoukankan      html  css  js  c++  java
  • 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);//执行3
    102     //死循环
    103 </script>
  • 相关阅读:
    CLRS2e读书笔记—Chapter11
    CLRS2e读书笔记—红黑树
    IOS 入门介绍1IOS简单介绍
    一些iOS高效开源类库
    关于ICloud编程。
    转载 10款iOS高效开发必备的ObjectiveC类库
    ObjecetiveC强制转换问题1
    总结:求随机数的方法
    NSObjcet类的简单说明
    随机函数之 rand() 与 arc4random() 对比(转)
  • 原文地址:https://www.cnblogs.com/paulirish/p/jstest1.html
Copyright © 2011-2022 走看看