JavaScript之模仿块级作用域
简介:在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之模仿块级作用域相关推荐
- JavaScript模仿块级作用域
avaScript 没有块级作用域的概念.这意味着在块语句中定义的变量,实际上是在包含 函数中而非语句中创建的,来看下面的例子: function outputNumbers(count){ for ...
- javascirpt如何模仿块级作用域(js高程笔记)
由于javascript没有块级作用域的概念,所以在块语句中定义的变量,实际上是在包含函数中而非语句中创建的. 如: function outputNumbers(count){for(var i=0 ...
- Java是块级作用域吗_javascirpt如何模仿块级作用域(js高程笔记)
由于javascript没有块级作用域的概念,所以在块语句中定义的变量,实际上是在包含函数中而非语句中创建的. 如: function outputNumbers(count){ for(var i= ...
- js模仿块级作用域(js没有块级作用域私有作用域)
js模仿块级作用域(js没有块级作用域私有作用域) 一.总结 1.js没有块级作用域:在for循环中定义的i,出了for循环还是有这个i变量 2.js可以模拟块级作用域:用立即执行的匿名函数:(匿名函 ...
- js导航条 二级滑动 模仿块级作用域
for(var i = 1;i<7;i++){ //因为首级标题有6个,对每个首级标题添加mouseover和mouseout事件. //这里用到块级作用域(function(k){docume ...
- es6 ie不兼容 函数_ES6:什么是块级作用域?
在 ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景. 我们先来看一下下面这种情况:内层变量可能会覆盖外层变量. var txt = '外层变量-->你好呀';func ...
- 搭建Babel运行环境,Traceur ES6模板,块级作用域,let和const命令
搭建Babel运行环境 Babel(http://babeljs.io/)可用于将使用ES6语法的脚本转化为ES5语法的脚本,基本功能的安装步骤如下: 1.安装node解释器和npm包管理工具 2.安 ...
- 学习笔记=《你不知道的JavaScript(上卷)》第三章:函数作用域和块级作用域...
3.1 函数中的作用域 (1)JavaScript具有基于函数的作用域,每声明一个函数的时候会为其自身创建一个'气泡',这个气泡内声明的变量或函数外界无法访问. 函数作用域的含义是指,属于这个函数的全 ...
- javascript中作用域、全局作用域、局部作用域、隐式全局变量、块级作用域、作用域链、预解析
作用域 作用域指的是代码的作用范围,按照作用域划分变量可分为全局变量和局部变量:作用域可分为: 全局作用域: 指全局变量作用的范围:全局变量指的是通过var在函数外面声明的变量,在js中任何位置都可以 ...
最新文章
- 使用Python,OpenCV和Hough圆检测图像中的圆
- logstash入门
- c语言bim的题目,求助:几道简单C语言程序小题
- 基于HTML在线考试系统开题报告,基于JSP的在线考试系统 开题报告.doc
- mac bash file密码_Mac系统 | 菜鸟程序员项目模拟数据迁移,会安装Mysql服务端吗
- Linux常用命令和服务器配置
- 你的企业混合云了吗?来看看评估混合云解决方案时要注意的6个原则!
- Hibernate 中出现 xxx表 is not mapped xxx的问题
- android studio syso快捷键,AndroidStudio代码段简写Live Template
- 查看gpio状态_基于Arduino开发,借助blinker平台,让NodeMCU实现8路继电器APP端状态监视和控制...
- 3Dcnn 降假阳性模型调试(八)
- 蛋糕matlab,用matlab绘制生日蛋糕
- 字符串匹配之PabinKarp(模式匹配)
- Apache环境利用.htaccess文件设置域名301跳转(不带www跳转到带www)
- 【语音识别】基于matlab高斯混合模型(GMM)说话人识别【含Matlab源码 574期】
- 物联网技术体系(一)
- 为什么开发人员都看不起运维工程师?
- KinectFusion
- 结对项目——最大联通子数组
- 【Android】自动瘦脸与眼睛放大美颜算法