JavaScript闭包在哪些复杂编程场景下被广泛应用?

2026-04-02 23:070阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1163个文字,预计阅读时间需要5分钟。

JavaScript闭包在哪些复杂编程场景下被广泛应用?

json{ original: 一、闭包+由于在JavaScript语言中,只有函数内部的子函数才能读取局部变量,闭包就是能够读取其他函数内部变量的函数。, revised: 一、闭包+JavaScript中,只有函数内部的子函数可以访问局部变量,闭包能访问其他函数的内部变量。}

一、闭包

  由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,闭包就是能够读取其他函数内部变量的函数。所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

  比如下面的代码:

function f1() { var n = 999; function f2() { console.log(n); } return f2; } var result = f1(); result();//999

  函数f2就被包括在函数f1内部,这时f1内部的所有局部变量,对f2都是可见的。但是反过来就不行,f2内部的局部变量,对f1就是不可见的。

  这就是Javascript语言特有的"链式作用域"结构(chain scope),子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量,对子对象都是可见的,反之则不成立。

  既然f2可以读取f1中的局部变量,那么只要把f2作为返回值,就可以在f1外部读取它的内部变量了。

二、闭包的使用场景

1.setTimeout

  原生的setTimeout传递的第一个函数不能带参数,通过闭包可以实现传参效果。

阅读全文

本文共计1163个文字,预计阅读时间需要5分钟。

JavaScript闭包在哪些复杂编程场景下被广泛应用?

json{ original: 一、闭包+由于在JavaScript语言中,只有函数内部的子函数才能读取局部变量,闭包就是能够读取其他函数内部变量的函数。, revised: 一、闭包+JavaScript中,只有函数内部的子函数可以访问局部变量,闭包能访问其他函数的内部变量。}

一、闭包

  由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,闭包就是能够读取其他函数内部变量的函数。所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

  比如下面的代码:

function f1() { var n = 999; function f2() { console.log(n); } return f2; } var result = f1(); result();//999

  函数f2就被包括在函数f1内部,这时f1内部的所有局部变量,对f2都是可见的。但是反过来就不行,f2内部的局部变量,对f1就是不可见的。

  这就是Javascript语言特有的"链式作用域"结构(chain scope),子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量,对子对象都是可见的,反之则不成立。

  既然f2可以读取f1中的局部变量,那么只要把f2作为返回值,就可以在f1外部读取它的内部变量了。

二、闭包的使用场景

1.setTimeout

  原生的setTimeout传递的第一个函数不能带参数,通过闭包可以实现传参效果。

阅读全文