首页 > 代码库 > 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练习题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。