js中闭包和立即执行函数(代码实例)
程序员文章站
2022-03-23 08:52:24
js中闭包和立即执行函数(代码实例)
/*
每个javascript函数都是一个对象,对象中有些属性我们可以进行访问,但有些属性不可以,这些属性仅供javascript引...
js中闭包和立即执行函数(代码实例)
/* 每个javascript函数都是一个对象,对象中有些属性我们可以进行访问,但有些属性不可以,这些属性仅供javascript引擎存取,其中[[scope]]就是其中一个 作用域就是[[scope]]所指的,查找对象的时候从作用域量的顶端依次向下查找 这里需要注意一个问题:执行上下文相对应GO :是按顺序从上往下执行的,其中销毁执行上下文AO:回到被定义的状态,等待下次被执行 */ function a1() { console.log(a1); function b() { var b = 234; console.log(b) } var a = 123; b(); } var glob = 100; a1(); /*闭包:将内部函数被保存到外部 闭包会造成的问题:原作用域链不会释放,会造成内存泄露 */ /*闭包的作用:1:实现共有变量*/ function add() { var count = 0; function demo() { count++; console.log(count); } return demo; //这里返回的是引用值即引用地址 } var aa = add(); console.log(aa) aa(); /*2:可以做缓存可以当做存储结构*/ function test() { var num = 100; function a() { num++; console.log(num); } function b() { num--; console.log(num); } return [a, b]; } var myArr = test(); console.log(myArr); myArr[0](); myArr[1](); function eater() { var food = " "; var obj = { //对象之中可以有方法即函数 eat: function () { console.log(" i am eating" + food); food = ""; }, push: function (myfood) { food = myfood; } } return obj; } var eater1 = eater(); eater1.push("apple") eater1.eat(); /*闭包:*/ function testb() { var arr = []; for (var i = 0; i < 10; i++) { arr[i] = function () { /*在for循环的时候i是变量未知数, 只有myarr[j]();执行的时候才知道i的值*/ document.write(i + " "); } } return arr; } var myarr = testb(); for (var j = 0; j < 10; j++) { myarr[j](); } /*打印出十个10*/ /*改进打印出0-9*/ function test12() { var arr = []; for (var i = 0; i < 10; i++) { arr[i] = function () { /*立即执行函数:读到它就会被执行,但是下面的函数还是赋值函数,不会立即被执行*/ (function (j) { arr[j] = function () { document.write(j + " "); } }(i)); } } return arr; } var myarr12 = test12(); for (var j = 0; j < 10; j++) { myarr12[j](); } /*打印出0-9*/
/*立即执行函数:此类函数没有声明,在一次执行完之后会立即被释放,适合做初始化的工作,读到它就会被执行 初始化功能的函数:这个函数只使用一个 */ (function () { var a = 124; var b = 34; console.log("和" + (a + b)) }()) (function (a, b) { console.log("和" + (a + b)); }(1, 3)) /*函数声明 只有表达式才能被执行符号执行 */ function test() { var aa = 123; } /*如下的样式才可以被执行 被执行符号执行的表达式,函数名就会被放弃,也就是立即执行函数*/ var test = function () { console.log("aoaoaoao"); }();
上一篇: [20190101]块内重整.txt
下一篇: Linux 总结篇