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

js作用域与闭包

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

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

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

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

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

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

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

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

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

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

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

    this指向

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

    前,指向window 后,指向函数

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

    相关文章

      网友评论

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

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