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 相关文章推荐
用js生产批量批处理执行命令
Jul 28 Javascript
js 获取(接收)地址栏参数值的方法
Apr 01 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
Apr 17 Javascript
jQuery+ajax实现动态执行脚本的方法
Jan 27 Javascript
jQuery实现首页图片淡入淡出效果的方法
Jun 10 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
Dec 23 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
May 27 Javascript
Vue.js每天必学之表单控件绑定
Sep 05 Javascript
基于JQuery及AJAX实现名人名言随机生成器
Feb 10 Javascript
AngularJS自定义过滤器用法经典实例总结
May 17 Javascript
Vue页面跳转动画效果的实现方法
Sep 23 Javascript
JavaScript实现连连看连线算法
Jan 05 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使用递归算法无限遍历数组示例
2017/01/13 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
PHP7 标准库修改
2021/03/09 PHP
一个js写的日历(代码部分网摘)
2009/09/20 Javascript
javascript string字符串优化问题
2011/07/31 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
浅析javascript中函数声明和函数表达式的区别
2015/02/15 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
2015/10/02 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
AngularJS中$http服务常用的应用及参数
2016/08/22 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
原生js实现仿window10系统日历效果的实例
2017/10/31 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
Python实现单词拼写检查
2015/04/25 Python
Python判断对象是否为文件对象(file object)的三种方法示例
2019/04/26 Python
django框架创建应用操作示例
2019/09/26 Python
使用Keras预训练好的模型进行目标类别预测详解
2020/06/27 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对
2015/05/02 面试题
幼师自荐信范文
2013/10/06 职场文书
公司中秋节活动方案
2014/02/12 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
房屋买卖委托书格式范本格式
2014/10/13 职场文书
导盲犬小Q观后感
2015/06/11 职场文书
2016继续教育研修日志
2015/11/13 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书