首页 > 代码库 > js练习题

js练习题

  1 //1.预解释毫无节操-自执行函数  2     f=function(){return true};  3     g=function(){return false};  4     (function(){  5         if(g()&&[]==![]){   //匿名函数中的g,即下面定义的方法g。  // []==![] 返回true  6             f=function(){return false;}  7             function g(){return true;}  8         }  9     })(); 10     alert(f());  //false 11     alert(g());  //false 12  13  14  15 // 2.自执行函数的预解释 16 (function f(){ 17     function f(){ return 1; } 18     alert (f());       //2 19     function f(){ return 2; } 20 })(); 21  22  23  24 // 3.作用域链 25 var a=12; 26 function show(){ 27     alert(a); 28     a=15; 29 } 30 show();   //12 31 alert(a); //15 32  33  34  35 // 4.预解释:变量声明早于代码运行 36 var a=12; 37 function show(){ 38     alert(a); 39     var a=15; 40 } 41 show();   //undefined 42 alert(a); //12 43  44  45 // 5.预解释:变量声明早于代码运行 46 var uname = ‘jack‘ 47 function change() { 48     alert(uname)      //undefined 49     var uname = ‘三峰‘ 50     alert(uname)      //‘三峰‘ 51 } 52 change()    53  54  55 // 6.在没有形参的情况下:函数声明早于变量声明 56 function change() { 57     alert(typeof fn)    // function 58     function fn() { 59         alert(‘hello‘) 60     } 61     var fn 62 } 63 change(); 64  65  66 // 7.带var和不带var的区别; 67 function abc(){ 68     a=12; 69     alert(a);   //12 70 } 71 function b(){ 72     alert(a)    //12 73 } 74 abc(); 75 b(); 76  77 // 面试题 78 // 1.关于内存释放的面试题 79 function fn() { 80     var i = 10; 81     return function (n) { 82         console.log(n + (++i)); 83     } 84 } 85     var f = fn(); //首先把fn执行,然后把执行的结果赋值给f,函数执行只要看函数里面有没有return 86     f(15);    //26  //引用,执行完不会立即释放 87     f(20);    //32 88     fn()(15); //26  //每次执行完内存释放,作用域销毁 89     fn()(15); //26 90     fn()(20); //31 91     fn()(30); //41 92     f(30);    //43 93  94  95 // 2.综合面试题 96 // 考察:this指向 97     var num = 10; 98     var obj = { 99         num: 20,100         fn: (function (num) {101             this.num *= 2;102             num += 10;103             return function () {104                 this.num *= 3;105                 num += 1;106                 console.log(num);107             }108         })(num)109     };110     var fn = obj.fn;111     fn();           //this->window   21112     obj.fn();       //this->obj      22113     console.log(window.num, obj.num);  //60, 60114 //https://zhidao.baidu.com/question/2270540468949188628.html115 //http://www.imooc.com/qadetail/161604?t=227246116 //https://www.zhihu.com/question/49789706117 118 119 // 3.关于this和||的运用;120 var name=‘三峰‘;121 var age=500;122 name=(function(name,age){123     arguments[0]=‘三峰‘;124     age=age||this.age;125     console.log(name,age);  //三峰 500126 })(name);127 console.log(name,age)  // undefined 500128 129 130 // 4.131 var i=3;132 function fn(){133     i*=2;134     return function(n){135         console.log(n*(++i))136     }137 }138 var f=fn();139 f(3)     //21140 fn()(3); //45141 f(4);    //64142 fn()(3); //99

 

js练习题