简介:在JavaScript中没有块级作用域的概念。这意味这在块语句中定义的变量,实际上在包含函数中而非语句中创建的。证明代码如下:

function outputNumbers(count){for(var i=0;i<count;i++){break;}alert(i);
}
outputNumbers(3); //输出:0

下面来分析上面这个函数,上面的函数中定义了一个for循环,在Java,C#,C++等语言中,变量i只会在for循环中有定义,循环一旦结束,变量i就会被销毁,可是在JavaScript中,变量是定义在outputNumbers的活动对象中的,因此从他有定义开始,就可以在函数的内部访问到它,即使你重新申明变量,只要不给变量赋值,他只会对后面的申明视而不见,代码如下:

function outputNumbers(count){for(var i=0;i<count;i++){break;}var i;alert(i);
}
outputNumbers(3); //输出:0

而JavaScript中的匿名函数可以用来模仿块级作用域并避免这个问题。

用作块级作用域(通常成为私有作用域)的匿名函数语法如下所示:

(function () {})()

转载于:https://www.cnblogs.com/GreenLeaves/p/5909597.html

JavaScript之模仿块级作用域相关推荐

  1. JavaScript模仿块级作用域

    avaScript 没有块级作用域的概念.这意味着在块语句中定义的变量,实际上是在包含 函数中而非语句中创建的,来看下面的例子: function outputNumbers(count){ for ...

  2. javascirpt如何模仿块级作用域(js高程笔记)

    由于javascript没有块级作用域的概念,所以在块语句中定义的变量,实际上是在包含函数中而非语句中创建的. 如: function outputNumbers(count){for(var i=0 ...

  3. Java是块级作用域吗_javascirpt如何模仿块级作用域(js高程笔记)

    由于javascript没有块级作用域的概念,所以在块语句中定义的变量,实际上是在包含函数中而非语句中创建的. 如: function outputNumbers(count){ for(var i= ...

  4. js模仿块级作用域(js没有块级作用域私有作用域)

    js模仿块级作用域(js没有块级作用域私有作用域) 一.总结 1.js没有块级作用域:在for循环中定义的i,出了for循环还是有这个i变量 2.js可以模拟块级作用域:用立即执行的匿名函数:(匿名函 ...

  5. js导航条 二级滑动 模仿块级作用域

    for(var i = 1;i<7;i++){ //因为首级标题有6个,对每个首级标题添加mouseover和mouseout事件. //这里用到块级作用域(function(k){docume ...

  6. es6 ie不兼容 函数_ES6:什么是块级作用域?

    在 ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景. 我们先来看一下下面这种情况:内层变量可能会覆盖外层变量. var txt = '外层变量-->你好呀';func ...

  7. 搭建Babel运行环境,Traceur ES6模板,块级作用域,let和const命令

    搭建Babel运行环境 Babel(http://babeljs.io/)可用于将使用ES6语法的脚本转化为ES5语法的脚本,基本功能的安装步骤如下: 1.安装node解释器和npm包管理工具 2.安 ...

  8. 学习笔记=《你不知道的JavaScript(上卷)》第三章:函数作用域和块级作用域...

    3.1 函数中的作用域 (1)JavaScript具有基于函数的作用域,每声明一个函数的时候会为其自身创建一个'气泡',这个气泡内声明的变量或函数外界无法访问. 函数作用域的含义是指,属于这个函数的全 ...

  9. javascript中作用域、全局作用域、局部作用域、隐式全局变量、块级作用域、作用域链、预解析

    作用域 作用域指的是代码的作用范围,按照作用域划分变量可分为全局变量和局部变量:作用域可分为: 全局作用域: 指全局变量作用的范围:全局变量指的是通过var在函数外面声明的变量,在js中任何位置都可以 ...

最新文章

  1. 使用Python,OpenCV和Hough圆检测图像中的圆
  2. logstash入门
  3. c语言bim的题目,求助:几道简单C语言程序小题
  4. 基于HTML在线考试系统开题报告,基于JSP的在线考试系统 开题报告.doc
  5. mac bash file密码_Mac系统 | 菜鸟程序员项目模拟数据迁移,会安装Mysql服务端吗
  6. Linux常用命令和服务器配置
  7. 你的企业混合云了吗?来看看评估混合云解决方案时要注意的6个原则!
  8. Hibernate 中出现 xxx表 is not mapped xxx的问题
  9. android studio syso快捷键,AndroidStudio代码段简写Live Template
  10. 查看gpio状态_基于Arduino开发,借助blinker平台,让NodeMCU实现8路继电器APP端状态监视和控制...
  11. 3Dcnn 降假阳性模型调试(八)
  12. 蛋糕matlab,用matlab绘制生日蛋糕
  13. 字符串匹配之PabinKarp(模式匹配)
  14. Apache环境利用.htaccess文件设置域名301跳转(不带www跳转到带www)
  15. 【语音识别】基于matlab高斯混合模型(GMM)说话人识别【含Matlab源码 574期】
  16. 物联网技术体系(一)
  17. 为什么开发人员都看不起运维工程师?
  18. KinectFusion
  19. 结对项目——最大联通子数组
  20. 【Android】自动瘦脸与眼睛放大美颜算法

热门文章

  1. floyd求最小环 模板
  2. WP7中对ListBox的ItemTemplate中子元素的后台操作
  3. Oracle RAC CRS-0184 --Cannot communicate with the CRS daemon
  4. 诗和远方:无题(五十二)- 写给认识的一个老姐的两只猫
  5. 诗与远方:无题(十二)
  6. Spring自学日志06(Aop)
  7. 高级JAVA - 动态代理的实现原理和源码分析
  8. Docker网络-(六)
  9. 计算机电子的危害,电子垃圾焚烧炉的危害有多大,你了解过吗?
  10. Maven史上最全总结