(1)全局作用域:在函数、类的外部声明的变量,具有全局作用域
(2)局部作用域:函数内部声明的变量(包括函数的形参)
(3)块级作用域:在语句块中声明的变量。而函数内部无法读取
闭包:在一个函数内部创建另一个函数,把内嵌的函数称为闭包,它可以访问外部函数的局部变量
- function fun(){
- let k = 0;
- function test(){ //test函数就是一个闭包
- let t = k + 14
- }
- }
- //以闭包的形式将 name 返回
- function fun(){
- let name = 'woniu'
-
- //定义闭包
- return function f1(){
- return name
- }
- }
-
- let ft = fun() //因为fun函数的返回值是f1函数,ft实质是一个函数
-
- let na = ft() //调用ft函数,实际调用的就是f1函数
- console.log(na); //woniu
- var f2
- function fn(){
- let name = '曹操'
- f2