我们知道js中所有的块级作用域都是无效的,块级作用域内的变量,在外部仍然可以被读取,其实是申明在外部的。如何实现变量的私有化,只在块级作用域起效,避免污染全局的变量呢。而且,挂载在全局的变量很难被回收,但是函数里面变量,执行完毕就会被回收(不包含函数内的引用函数变量的内部函数,也叫闭包)

javascript引入立即执行函数,来创建私有作用域。

书上的描述

那么举一些例子来说明一下,在实际代码中的运用

打开vue引用的node_module中的vue.js

这个代码的结构简写就是

(function(global, factory){

}(this, function(){}))

这是一个私有作用域

除了vue.js,传统的jquery的结构也是这样的

外部的结构抽出来就是

(function(window, underfined){})(window);

这也是一个私有作用域,立即执行函数

如果自己写一个组件和框架的时候,记得用一个立即执行函数去封装模块代码。而且立即执行函数执行完毕,内部的变量就能被回收。

内存问题

javascript中的私有作用域的更多相关文章

  1. Javascript中闭包的作用域链

    作用域定义了在当前上下文中能够被访问到的成员,在Javascript中分为全局作用域和函数作用域,通过函数嵌套可以实现嵌套作用域. 闭包一般发生在嵌套作用域中.闭包是JavaScript最强大的特性之 ...

  2. javascript中的this作用域详解

    javascript中的this作用域详解 Javascript中this的指向一直是困扰我很久的问题,在使用中出错的机率也非常大.在面向对象语言中,它代表了当前对象的一个引用,而在js中却经常让我觉 ...

  3. javascript中的变量作用域以及变量提升

    在javascript中, 理解变量的作用域以及变量提升是非常有必要的.这个看起来是否很简单,但其实并不是你想的那样,还要一些重要的细节你需要理解. 变量作用域 “一个变量的作用域表示这个变量存在的上 ...

  4. javascript 中的 let 作用域

    let 声明了一个块级域的局部变量,并且可以给它一个初始化值. 语法EDIT let var1 [= value1] [, var2 [= value2]] [, ..., varN [= value ...

  5. JavaScript 中变量、作用域和内存问题的学习

    这是我学习JavaScript的第二篇文章,之前做过几年的Java开发,发现JavaScript虽然也是面向对象的语言但是确实有很多不同之处.就本篇博客,主要学习总结一下最近学习到的JavaScrip ...

  6. javascript中的变量作用域以及变量提升详细介绍

    在javascript中, 理解变量的作用域以及变量提升是非常有必要的.这个看起来是否很简单,但其实并不是你想的那样,还要一些重要的细节你需要理解变量作用域 “一个变量的作用域表示这个变量存在的上下文 ...

  7. javascript中的变量作用域

    在网上看了一道js面试题 <script type="text/javascript"> var tt = 'aa'; function test() { alert( ...

  8. JavaScript中的私有成员[翻译]

    原作者:Douglas Crockford,原文地址:http://www.crockford.com/javascript/private.html JavaScript 是世界上被误解最深的编程语 ...

  9. JavaScript中变量、作用域、内存问题

    这几天,闲的没事看看JavaScript高级编程,感觉JavaScript真的很强大,尤其是采用面向对象的编程方式. 一.   基本类型和引用类型的值: ECMAScript变量可能包含两种不同数据类 ...

随机推荐

  1. jqGrid 多选复选框 编辑列 方法事件

    参考:https://blog.csdn.net/zsq520520/article/details/53375284?locationNum=8&fps=1

  2. 在cnblog中试用Markdown

    参考: http://www.cnblogs.com/cmt/p/markdown.html https://www.cnblogs.com/cmt/p/markdown-latex.html htt ...

  3. vue2 Excel导出数据 js-xlsx的使用

    vue2 Excel导出数据 js-xlsx的使用 https://www.jianshu.com/p/ea115a8e9107 小世界最温暖 关注 2018.11.19 16:08 字数 280 阅 ...

  4. taucs库的使用方法(VS2012)

    第一步:到taucs主页下载taucs,我下载的是:Version 2.2 of the code, with external libraries 第二步:在visual studio tools下 ...

  5. 有关《查找两个List中的不同元素》的问题解答与编程实践

     郑海波 2013-07-08 问题: 有List<String> list1和List<String> list2,两个集合各有上万个元素,怎样查找两个集合中不同的元素呢? ...

  6. Jquery实现列表增删改

    //需求:对列表的增删改  //代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  7. HihoCoder第一周与POJ3974:最长回文字串

    这个题目是hihoCoder第一周的题目,自己打算从第一周开始做起,不知道能追上多少,更不知道这一篇写完,下一篇会是什么时候... 题意很简单. 输入: abababa aaaabaa acacdas ...

  8. MongoDB首次启动常见问题

    问题1. exception in initandlisten 29 data directory /data/db not found 问题:MongoDB默认存储路径为/data/db,这里显示没 ...

  9. Andorid 搭建 Linux服务器(一)

    00.搭建环境 电脑系统:MacOS下Win7虚拟机 手机型号:红米Note5A 手机系统:MIUI10开发版 软件: SuperSU      --通过recovery刷入,管理ROOT权限 Bus ...

  10. 清除windows激活信息

    1.管理员运行命令提示符 在命令提示符中输入 slmgr /upk---删除当前KMS密匙 出现"成功地卸载了产品密匙"后,继续依次执行下面两个命令 slmgr /ckms---此 ...