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 相关文章推荐
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
Apr 17 Javascript
javascript中的return和闭包函数浅析
Jun 06 Javascript
IE中图片的onload事件无效问题和解决方法
Jun 06 Javascript
js自定义回调函数
Dec 13 Javascript
JavaScript File API实现文件上传预览
Feb 02 Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
Aug 16 Javascript
canvas 绘制圆形时钟
Feb 22 Javascript
Extjs表单输入框异步校验的插件实现方法
Mar 20 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
Sep 05 Javascript
微信小程序顶部可滚动导航效果
Oct 31 Javascript
nginx+vue.js实现前后端分离的示例代码
Feb 12 Javascript
微信小程序自定义导航教程(兼容各种手机)
Dec 12 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的FTP学习(一)
2006/10/09 PHP
PHP中防止SQL注入实现代码
2011/02/19 PHP
php中用于检测一个地理IP地址是否可用的代码
2012/02/19 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
php时间计算相关问题小结
2016/05/09 PHP
PHP Header失效的原因分析及解决方法
2016/11/16 PHP
如何快速的呈现我们的网页的技巧整理
2007/07/01 Javascript
JavaScript中null与undefined分析
2009/07/25 Javascript
JavaScript OOP类与继承
2009/11/15 Javascript
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
js语法学习之判断一个对象是否为数组
2014/05/13 Javascript
js对象基础实例分析
2015/01/13 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
require简单实现单页应用程序(SPA)
2016/07/12 Javascript
Ubuntu系统下Angularjs开发环境安装
2016/09/01 Javascript
Vue用v-for给src属性赋值的方法
2018/03/03 Javascript
js实现坦克大战游戏
2020/02/24 Javascript
[03:48]大碗DOTA
2019/07/25 DOTA
python计算两个矩形框重合百分比的实例
2018/11/07 Python
Python实现Restful API的例子
2019/08/31 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
Html5页面获取微信公众号的openid的方法
2020/05/12 HTML / CSS
中国第一家杂志折扣订阅网:杂志铺
2016/08/30 全球购物
Nike英国官网:Nike.com (UK)
2017/02/13 全球购物
Burberry英国官网:英国标志性奢侈品牌
2017/03/29 全球购物
澳大利亚连衣裙和女装在线:Esther
2017/11/11 全球购物
土木工程师岗位职责
2013/11/24 职场文书
公司募捐倡议书
2014/05/14 职场文书
应聘护士求职信
2014/07/21 职场文书
医院领导班子四风对照检查材料
2014/09/27 职场文书
鼋头渚导游词
2015/02/05 职场文书
借款民事起诉状范文
2015/05/19 职场文书
羊脂球读书笔记
2015/06/30 职场文书
Java 中的 Lambda List 转 Map 的多种方法详解
2022/07/07 Java/Android