函数补充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>

 

posted @ 2022-08-09 17:09  YBYZ  阅读(22)  评论(0)    收藏  举报