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>