函数补充03(深入)闭包、Boolean函数
1 <script> 2 //一、 闭包 3 //1、函数内部创建的函数 4 function f() { 5 var count = 1; 6 return function f1() { 7 console.log(count); 8 } 9 f1()//1 10 } 11 console.log(f());//一个函数 12 13 //2、闭包:函数内部返回函数 14 //闭包的作用:把函数内部的局部变量持久存放在内存中。 15 function fa() { 16 var count = 2;//原本函数被调用后 其中的变量会自动销毁 但是这里被其他的函数调用并返回出去,就不能被销毁 17 return function () { 18 count++; 19 return (count); 20 } 21 } 22 console.log(fa());//返回的是一个函数 23 let fb = fa(); 24 console.log(fb());//3 25 26 //3、()可以立即运行函数 27 let fc = (function (a) { 28 console.log('fc' + a); 29 return a;//将a的值反出去 30 })('go')//在函数的后面添加()立即运行函数 相当于声明调用同时执行 31 console.log(fc); 32 //以function开头的关键词一律解释为js语句,这在语法中是不正确的 所以要达到上面的效果(立即执行) 需要将function语句用括号括起来() 33 (function (a) { 34 console.log('test' + a); 35 })('go')//()里面表示一个独立的js语句 可以直接使用匿名函数进行执行操作 36 37 //4.eval可以把字符串作为代码运行 eval()里面可以创建全局变量,会影响程序运行,容易造成安全隐患,一般不要使用 38 // 一般用Function() 代替eval功能,Function是在函数体执行js语句,里面创建的是局部变量,不会影响程序。 39 var str1 = 'var a=1'; 40 eval(str1); 41 console.log(a);//1 a作为全局变量 42 43 44 45 46 47 48 49 //二、Boolean()函数,可以把任意类型转换为bool类型 50 //js判断句里面 undefined null '' 0 NaN都是false,Boolean函数除了这几种数据类型转为false以为,其他的数据类型都是转为true 51 console.log(Boolean(0));//false 52 console.log(Boolean({}));//true 53 54 55 56 57 </script>