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 相关文章推荐
functional继承模式 摘自javascript:the good parts
Jun 20 Javascript
利用cookie记住背景颜色示例代码
Nov 04 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
Dec 19 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
Dec 16 Javascript
不得不看之JavaScript构造函数及new运算符
Aug 21 Javascript
js封装成插件的步骤方法
Sep 11 Javascript
Vuex提升学习篇
Jan 11 Javascript
vue 组件 全局注册和局部注册的实现
Feb 28 Javascript
vue2.0 根据状态值进行样式的改变展示方法
Mar 13 Javascript
浏览器事件循环与vue nextTicket的实现
Apr 16 Javascript
微信小程序入门之指南针
Oct 22 Javascript
vue.js watch经常失效的场景与解决方案
Jan 07 Vue.js
微信小程序封装的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
smarty简单分页的实现方法
2014/10/27 PHP
PHP开启opcache提升代码性能
2015/04/26 PHP
jquery复选框CHECKBOX全选、反选
2008/08/30 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
每天一篇javascript学习小结(面向对象编程)
2015/11/20 Javascript
AngularJS实现单独作用域内的数据操作
2016/09/05 Javascript
jquery实现刷新随机变化样式特效(tag标签样式)
2017/02/03 Javascript
微信小程序模板之分页滑动栏
2017/02/10 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
关于 angularJS的一些用法
2017/11/29 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
Webpack 4.x搭建react开发环境的方法步骤
2018/08/15 Javascript
小程序自定义日历效果
2018/12/29 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
python控制台英汉汉英电子词典
2020/04/23 Python
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
Python中Continue语句的用法的举例详解
2015/05/14 Python
Python中eval带来的潜在风险代码分析
2017/12/11 Python
Python iter()函数用法实例分析
2018/03/17 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
Pytorch的mean和std调查实例
2020/01/02 Python
const char*, char const*, char*const的区别是什么
2014/07/09 面试题
初中生学习的自我评价
2013/11/14 职场文书
门卫岗位安全职责
2013/12/13 职场文书
机电一体化应届生求职信范文
2014/01/24 职场文书
体育教师个人的自我评价
2014/02/16 职场文书
参观接待方案
2014/03/17 职场文书
2014幼儿园教师师德师风演讲稿
2014/09/10 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
2015入党自荐书范文
2015/03/05 职场文书