JS块级作用域和私有变量实例分析


Posted in Javascript onMay 11, 2019

本文实例讲述了JS块级作用域和私有变量。分享给大家供大家参考,具体如下:

块级作用域

(function(){
  //这里是块级作用域
})()

例如:

(function(){
  for(var i=0;i<5;i++){
    alert(i);//0,1,2,3,4
  }
})();
alert(i);//error

上例中,定义了一个块级作用域,变量i在块级作用域中可见的,但是在块级作用域外部则无法访问。

这种技术经常在全局作用域中被用在函数外部,从而限制向全局作用域中添加过多的变量和函数。

私有变量

任何在函数中定义的变量,都可以认为是私有变量。因为不能在函数的外部访问这些变量。私有变量包括函数的参数、局部变量和在函数内部定义的其他函数。

我们把有权访问私有变量和私有函数的公有方法称为特权方法:

function MyObject(){
//私有变量和私有函数
  var privateVariable = 10;
  function privateFunction(){
    return false;
  }
  //特权方法,特权方法作为闭包有权访问在构造函数中定义的所有变量和函数
  this.publicMethod = function (){
    privateVariable++;
    return privateFunction();
  };
}
var obj = new MyObject();
obj.publicMethod();//

原型模式定义共有方法:

(function(){
  //私有变量和私有函数
  var privateVariable = 10;
  function privateFunction(){
    return false;
  }
  //构造函数
  MyObject = function(){
  };
  //公有/特权方法
  MyObject.prototype.publicMethod = function(){
    privateVariable++;
    return privateFunction();
  };
})();

模块模式:

var singleton = function(){
//私有变量和私有函数
  var privateVariable = 10;
  function privateFunction(){
    return false;
  }
  //特权/公有方法和属性
  return {
    publicProperty: true,
    publicMethod : function(){
      privateVariable++;
      return privateFunction();
    }
  };
}();

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
Extjs中DisplayField的日期或者数字格式化扩展
Sep 03 Javascript
javascript循环变量注册dom事件 之强大的闭包
Sep 08 Javascript
javascript背景时钟实现方法
Jun 18 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
Jan 19 Javascript
在javascript中创建对象的各种模式解析
May 16 Javascript
浅谈JavaScript的内置对象和浏览器对象
Jun 03 Javascript
可输入文字查找ajax下拉框控件 ComBox的实现方法
Oct 25 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
Feb 17 Javascript
Angular2 组件通信的实例代码
Jun 23 Javascript
vue 使用Jade模板写html,stylus写css的方法
Feb 23 Javascript
vue 组件间的通信之子组件向父组件传值的方式
Jul 29 Javascript
React 条件渲染最佳实践小结(7种)
Sep 27 Javascript
微信小程序封装的HTTP请求示例【附升级版】
May 11 #Javascript
微信小程序自定义toast组件的方法详解【含动画】
May 11 #Javascript
jQuery实现动态生成年月日级联下拉列表示例
May 11 #jQuery
JS实现获取当前所在周的周六、周日示例分析
May 11 #Javascript
js核心基础之构造函数constructor用法实例分析
May 11 #Javascript
js核心基础之闭包的应用实例分析
May 11 #Javascript
vue下载excel的实现代码后台用post方法
May 10 #Javascript
You might like
探讨PHP使用eAccelerator的API开发详解
2013/06/09 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
PHP的引用详解
2015/02/22 PHP
php检查日期函数checkdate用法实例
2015/03/19 PHP
PHP crypt()函数的用法讲解
2019/02/15 PHP
Javascript的常规数组和关联数组对比小结
2012/05/24 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
详解A标签中href=&quot;&quot;的几种用法
2017/08/20 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
详解小程序云开发数据库
2019/05/20 Javascript
浅析vue-router实现原理及两种模式
2020/02/11 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
Vue js with语句原理及用法解析
2020/09/03 Javascript
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
[14:25]教你分分钟做大人:主宰(HEROS)
2014/12/08 DOTA
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
PyQt5每天必学之单行文本框
2018/04/19 Python
python实现将读入的多维list转为一维list的方法
2018/06/28 Python
pymysql模块的操作实例
2019/12/17 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
使用python计算三角形的斜边例子
2020/04/15 Python
python 中 .py文件 转 .pyd文件的操作
2021/03/04 Python
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
美国波西米亚风格精品店:South Moon Under
2019/10/26 全球购物
硕士研究生个人求职信
2013/12/04 职场文书
2014年会演讲稿范文
2014/01/06 职场文书
退休感言
2014/01/28 职场文书
《值日生》教学反思
2014/02/17 职场文书
项目建议书怎么写
2014/05/15 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
纪念九一八事变83周年国旗下讲话稿
2014/09/15 职场文书
庆六一宣传标语
2014/10/08 职场文书
党支部考察意见范文
2015/06/02 职场文书