JS第27天---闭包

闭包(closure)指有权访问另一个函数作用域中变量的函数。(官方说法)

简单理解就是 ,定义在一个函数内部的,它可以访问到外部函数的局部变量。

function init() { 
       var name = "Mozilla"; // name 是一个被 init 创建的局部变量 
       function displayName() { // displayName() 是内部函数,一个闭包 
         alert(name); // 使用了父函数中声明的变量 
       }
       displayName();
}
init(); 

看重点:displayName() 没有自己的局部变量。
然而,因为它可以访问到外部函数的变量,所以 displayName() 可以使用父函数 init() 中声明的变量 name 。 
在一些编程语言中,一个函数中的局部变量仅存在于此函数的执行期间。
一旦 init() 执行完毕,你可能会 认为 name 变量将不能再被访问。

闭包的特点

1. 函数嵌套

2. 内部函数使用外部函数作用域内的变量

函数复习:

1.1 函数的定义和调用

函数的定义方式

方式1 函数声明方式 function fn(){}

方式2 函数表达式(匿名函数) var fn = function(){}

方式3 new Function() var fn = new Function('参数1','参数2'..., '函数体')

  • 注意 Function 里面参数都必须是字符串格式
  • 第三种方式执行效率低,也不方便书写,因此较少使用
  • 所有函数都是 Function 的实例(对象)
  • 函数也属于对象

1.1.2函数的调用
普通函数的调用--->直接调用

function fn() { 
    console.log('人生的巅峰'); 
}
fn();

对象的方法--->对象调用

var o = { 
 sayHi: function() { 
    console.log('人生的巅峰'); 
 } 
}
o.sayHi()

构造函数-->new 调用

function Star(name,age) {
   this.name = name;
   this.age = age;
}; 

new Star();

立即执行函数(IIFE)

(function () {  })();

高阶函数

概念:高阶函数是对其他函数进行操作的函数,它接收函数作为参数或将函数作为返回值输出。

  1. 接收函数作为参数--->回调函数
  2. 函数作为返回值输出

变量作用域复习

变量根据作用域的不同分为两种:全局变量和局部变量。

  • 函数内部可以使用全局变量。
  • 函数外部不可以使用局部变量。
  • 当局部函数执行完毕,本作用域内的局部变量会销毁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值