JS——作用域、闭包

目录

一、常用系统函数

isNaN()

二、无参函数

1、第一种调用方式:按钮调用

2、第二种调用方式:fn() 函数名直接调用

函数可以自己执行,不一定总是使用点击事件

三、传递参数

1、按钮里传递

 2、函数名里直接传参:fn(a,b)

 四、return

1、函数通过return将值返回调用它的地方

2、函数会停止执行,并返回指定的值 

 五、变量

1、全局变量

定义在函数外部是全局变量,网页上的所有脚本和函数都能访问它。

2、局部变量 

六、作用域

1、全局作用域

(1)系统给默认的全局的对象 window 

(2)所有末定义直接赋值的变量自动声明为拥有全局作用域 

(3)最外层函数(例如:下面的fn)和在最外层函数外面定义的变量拥有全局作用域 ​

2.局部作用域

七、作用域链 

 九、闭包

一函数就是一个闭包, 闭包就是为了访问函数内部的变量

用途

  缺点​


一、常用系统函数

例:parseInt("abc") ===> NaN 不是一个数字

isNaN()

用于检查其参数是否是非数字,会把字符串数字转为数字

不是数字  返回turn
是数字  返回false


二、无参函数

1、第一种调用方式:按钮调用

<body>
    <!-- 第一种调用方式 -->
    <button onclick="fn()"></button>
</body>

2、第二种调用方式:fn() 函数名直接调用

函数可以自己执行,不一定总是使用点击事件

<script>
        //第二种调用方式
        //函数可以自己执行,不一定总是使用点击事件
        function fn(){
            alert(1)
        }
        fn()
 </script> 

三、传递参数

1、按钮里传递


 2、函数名里直接传参:fn(a,b)


 四、return

1、函数通过return将值返回调用它的地方


2、函数会停止执行,并返回指定的值 


 五、变量

1、全局变量

定义在函数外部是全局变量,网页上的所有脚本和函数都能访问它。

作用域:在全局中都能被访问。(所有window对象的属性拥有全局作用域,所有末定义直接赋值的变量自动声明为拥有全局作用域。)

生存期:全局变量在页面关闭后被删除。


2、局部变量 

在函数内部声明的变量(必须使用var或let或const来定义一下,如果不使用就会变成全局变量。),只能在函数内部访问它。(可以在不同的函数中使用名称相同的局部变量。)

作用域:只能在函数内部被访问。

生存期:局部变量在函数运行以后被删除(垃圾回收机制 简称 GC),变量被释放了,所以会提高性能。


六、作用域

        作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期

1、全局作用域

所有window对象的属性拥有全局作用域

(1)系统给默认的全局的对象 window 


(2)所有末定义直接赋值的变量自动声明为拥有全局作用域 


(3)最外层函数(例如:下面的fn)和在最外层函数外面定义的变量拥有全局作用域 


2.局部作用域

 和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到


七、作用域链 

从里到外,就近原则。(先从当前寻找,如果找不到就会一层一层向上寻找,直到找到,如果一直向上寻找也找不到,就会报错。

且具有就近原则,如果当前的作用域下,就存在变量,那么就优先找自己作用域下的变量。)


 八、闭包

一函数就是一个闭包, 闭包就是为了访问函数内部的变量

用途:可以读取函数内部的变量,让这些变量的值始终保持在内存中。

缺点:1、闭包会在父函数外部,改变父函数内部变量的值。

           2、闭包会使得函数中的变量都被保存在内存中,内存消耗很大。

用途


  缺点

猜你喜欢

转载自blog.csdn.net/weixin_68485297/article/details/124546599