如何用JavaScript闭包实现类似块级作用域的局部变量访问?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1219个文字,预计阅读时间需要5分钟。
本示例讲述了JavaScript使用闭包模拟块级作用域操作。分享给家长和参考如下:
+ 在阅读本文之前,建议先阅读JavaScript的作用域链以及JavaScript闭包。+ 正如闭包的定义,以下是一个闭包的示例:
本文实例讲述了JavaScript使用闭包模仿块级作用域操作。分享给大家供大家参考,具体如下:
在阅读这篇文章之前,建议先阅读JavaScript的作用域链以及JavaScript闭包。
正如闭包的定义一样:“闭包指的是有权访问另一个函数作用域中的变量的函数”, 闭包最大的意义就在于闭包可以对另一个函数作用域的变量进行访问,由此,闭包可以延伸出一系列的用法。
模仿块级作用域
JavaScript没有块级作用域的概念。这意味着在块语句中定义的变量,实际上是包含在函数中而非语句中创建的。从作用域链的角度来理解是,所有在函数内定义的变量(所有,也就是说块语句中定义的变量也包含在内)都会在这个函数执行时所创建的函数的活动对象中,因此从函数内的所有变量定义开始,就可以在函数内部随处访问它,闭包也可以通过作用域链访问它。
例子:
function outputNumbers(count){ for(var i = 0; i < count; i++){ console.log(i); // 0, 1, ... count - 1 } console.log(i); // count }
C++, JAVA等语言中,变量i只会在for循环的语句块(block)中有定义,循环一旦结束,变量i就会被销毁。
本文共计1219个文字,预计阅读时间需要5分钟。
本示例讲述了JavaScript使用闭包模拟块级作用域操作。分享给家长和参考如下:
+ 在阅读本文之前,建议先阅读JavaScript的作用域链以及JavaScript闭包。+ 正如闭包的定义,以下是一个闭包的示例:
本文实例讲述了JavaScript使用闭包模仿块级作用域操作。分享给大家供大家参考,具体如下:
在阅读这篇文章之前,建议先阅读JavaScript的作用域链以及JavaScript闭包。
正如闭包的定义一样:“闭包指的是有权访问另一个函数作用域中的变量的函数”, 闭包最大的意义就在于闭包可以对另一个函数作用域的变量进行访问,由此,闭包可以延伸出一系列的用法。
模仿块级作用域
JavaScript没有块级作用域的概念。这意味着在块语句中定义的变量,实际上是包含在函数中而非语句中创建的。从作用域链的角度来理解是,所有在函数内定义的变量(所有,也就是说块语句中定义的变量也包含在内)都会在这个函数执行时所创建的函数的活动对象中,因此从函数内的所有变量定义开始,就可以在函数内部随处访问它,闭包也可以通过作用域链访问它。
例子:
function outputNumbers(count){ for(var i = 0; i < count; i++){ console.log(i); // 0, 1, ... count - 1 } console.log(i); // count }
C++, JAVA等语言中,变量i只会在for循环的语句块(block)中有定义,循环一旦结束,变量i就会被销毁。

