美文网首页前端零碎
js作用域与闭包

js作用域与闭包

作者: 鸡毛菜菜子 | 来源:发表于2020-01-13 11:32 被阅读0次

全局作用域只有一个,每个函数又都有作用域(环境)。

作用域可以从内部向外部查找,但是不能从外部向内部查找

1.全局函数,全局环境不会被回收,也可以渗透到函数里,可以被使用。

2.函数作用域,只有该函数体内可以使用。每被调用一次都会新开辟一个内存空间,在调用结束之后被摧毁。也就是说一般情况下,函数执行形成一个私有的作用域,当执行完成后就销毁了->节省内存空间。

3.如果环境定义的属性一直被使用,内存空间就不会被释放。

变量之间赋值是给值,对象赋值是给内存指针

构造函数也是很好的环境例子,子函数被外部使用父级环境将被保留

块级作用域可以简单理解为{},只对let、const声明的变量有效,对var声明的无效。

闭包指子函数可以访问外部作用域变量的函数特性,即使在子函数作用域外也可以访问父函数。如果没有闭包那么在处理事件绑定,异步请求时都会变得困难。JS中的所有函数都是闭包闭包一般在子函数本身作用域以外执行,即延伸作用域。

如图一所示,红色框内可以使用蓝色框里的变量,蓝色框无法使用红色框变量,也就是子函数可以访问外部作用域变量的函数特性。

this指向

this 总是指向调用该函数的对象,即函数在搜索this时只会搜索到当前活动对象下面是函数因为是在全局环境下调用的,所以this指向window,这不是我们想要的。

前,指向window 后,指向函数

就是面向字面量函数中属性中定义的子函数,子函数的this指向window。

相关文章

  • 你不懂JS:作用域与闭包

    你不懂JS:作用域与闭包 第五章:作用域闭包 希望我们是带着对作用域工作方式的健全,坚实的理解来到这里的。 我们将...

  • js闭包的理解

    什么是闭包 通俗的来讲,个人觉得闭包就是延长变量作用域的函数。众所周知js的作用域分为全局作用域和链式作用域。在函...

  • Javascript 闭包

    如果要了解闭包,我们需要先了解闭包的由来,闭包的产生,源于JS的词法作用域 词法作用域 作用域是指一个 变量能够访...

  • js 闭包

    一、js 作用域 讲闭包首先就要理解 js 的作用域。再 ES5 中,js 有两种作用域,全局作用域和函数作用域(...

  • 2.Dart面向对象

    函数 命名可选参数{} 位置可选参数[] 作用域定义:与js的作用域一致,层层向上找。 Dart函数闭包 js函数...

  • JS 闭包(Closure)

    参考阮一峰老师的JS 闭包 理解闭包前需要理解变量作用域、变量提升 JS作用域 那如何让它依次打印,12345呢;...

  • js闭包详解

    1.什么是闭包? 要了解什么是闭包,首先你要了解作用域。 js的作用域分两种,全局作用域和局部作用域。 我们知道在...

  • 作用域和闭包

    目录 概述 作用域编译过程词法作用域全局作用域函数作用域 闭包循环和闭包闭包的用途性能 总结 概述 作用域和闭包一...

  • 14.JS基础之作用域与闭包

    作用域: 全局作用域 函数作用域 块级作用域(ES6新增) 常见的闭包有:作为函数返回值的闭包与作为函数参数的闭包...

  • 学习JavaScript闭包和作用域笔记

    JS JavaScript闭包和作用域 闭包 JavaScript高级程序设计中对闭包的定义:闭包是指有权访问另外...

网友评论

    本文标题:js作用域与闭包

    本文链接:https://www.haomeiwen.com/subject/azrgactx.html