闭包的作用?匿名函数的作用?很多次面试会被问到:(function(){})()
1. 匿名函数的作用域只能在这个闭包里,但是同时又能访问到外面的变量;
2. 匿名函数里面,我们可以将全局变量当做参数传入,然后使用,相比隐式全局变量,更清晰,更快
var block = (function(){ var my = {}; my.name = "Nick"; return my; })(); var block = (function(my){ my.add = [12,3,4]; return my; })(block || {}); console.log(block); // Object {name: "Nick", add: Array[3]}
通常我们申明一个object,可以写 :
var block = block || {};// 这个时候 var 不能去掉 否则报错 ,因为block没有被提前申明,报错 block is not defined!
松耦合扩展:
var block = block || {}; var block = (function(){ yy=123; var my = {}; my.name = "Nick"; return my; })(); var block = (function(my){ my.add = [12,3,4]; return my; })(block || {}); var block = (function(my){ my.addww = "xx"; return my; })(block || {}); console.log(block); // Object {name: "Nick", add: Array[3]} var block = (function(my){ my.old = my.add; my.add = "ss"; return my; })(block); console.log(block);