闭包:有权访问另一个函数作用域变量的函数
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <script type="text/javascript"> 7 var a=4; 8 function myfunction(){ 9 var a=6; 10 document.getElementById("s").innerHTML=add1(); 11 } 12 //第一种写法: 13 var add=(function add(){ 14 var b=0; 15 return function(){ 16 return b+=1; 17 } 18 })(); 19 //第二种写法: 20 var add1=(function add1(){ 21 var c=0; 22 function add2(){ 23 return c+=1; 24 } 25 return add2; 26 })(); 27 28 </script> 29 </head> 30 <body> 31 <button onclick="myfunction()">点击</button> 32 <span id="s"></span> 33 </body> 34 </html>
面试题:(常用Js的可能会考核)
1 var name = "The Window"; 2 3 var object = { 4 name: "My Object", 5 6 getNameFunc : function(){ 7 return function(){ 8 return this.name; 9 }; 10 11 } 12 13 }; 14 15 alert(object.getNameFunc()());
执行结果:弹出The Window
1 var name = "The Window"; 2 3 var object = { 4 name : "My Object", 5 6 getNameFunc : function(){ 7 var that = this; 8 return function(){ 9 return that.name; 10 }; 11 12 } 13 14 }; 15 alert(object.getNameFunc()());
执行结果:弹出My Object