4.2 js没有块级作用域
JavaScript没有块级作用域。在其他语言上,比如C语言中,有花括号封闭的代码块都有自己的作用域,(如果用ECMAScript的话来讲,就是他们自己的执行环境),因而支持根据条件来定义变量。例如,下面的代码效果
if (true) {
var color = "blue";
}
alert(color);//blue
这里是一个if语句中定义了一个变量color,如果是在C,C++或者Java中,color会在if执行后被销毁。但是在JavaScript中,if语句中的变量声明会将变量添加到当前的执行环境(这里是全局环境)中。在使用for语句时尤其要牢记这个差异。例如
for (var i =0; i < 10; i++) {
doSomething(i);
}
alert(i); // 10
对于有块级作用域的语言来说,for语句初始化变量的表达式所定义的变量,只会存在于循环的环境中。而对于JavaScript来说,for语句创建的变量i即使在for循环执行结束之后,依旧存在于循环外部的执行环境之中。
1.声明变量
使用var声明变量会自动被添加到最近的环境之中。在函数内部,最接近的环境就是函数的局部环境;如果没有使用var,则变量会被自动添加到全局环境中。
转载于:https://www.cnblogs.com/chzlh/p/7580529.html
4.2 js没有块级作用域相关推荐
- js模仿块级作用域(js没有块级作用域私有作用域)
js模仿块级作用域(js没有块级作用域私有作用域) 一.总结 1.js没有块级作用域:在for循环中定义的i,出了for循环还是有这个i变量 2.js可以模拟块级作用域:用立即执行的匿名函数:(匿名函 ...
- JS 没有块级作用域
在函数(方法)中声明的所有变量,他们在整个函数中都有定义 var scope="abc"; function f() { alert(scope); //显示undefine v ...
- 前端学习(753):js没有块级作用域
- js导航条 二级滑动 模仿块级作用域
for(var i = 1;i<7;i++){ //因为首级标题有6个,对每个首级标题添加mouseover和mouseout事件. //这里用到块级作用域(function(k){docume ...
- 浅谈js中的var和function变量提升,var声明变量提升,块级作用域中的函数提升
1.首先最常见的一种变量提升 console.log(a); //输出 undefinedvar a=10;console.log(a) // 输出 10 var 有提升的作用其实上面的代码会变成会变 ...
- javascirpt如何模仿块级作用域(js高程笔记)
由于javascript没有块级作用域的概念,所以在块语句中定义的变量,实际上是在包含函数中而非语句中创建的. 如: function outputNumbers(count){for(var i=0 ...
- Java是块级作用域吗_javascirpt如何模仿块级作用域(js高程笔记)
由于javascript没有块级作用域的概念,所以在块语句中定义的变量,实际上是在包含函数中而非语句中创建的. 如: function outputNumbers(count){ for(var i= ...
- 你真的懂switch吗?聊聊switch语句中的块级作用域
最近在代码中不小心不规范的,在switch里面定义了块级变量,导致页面在某些浏览器中出错,本文讨论以下switch语句中的块级作用域. switch语句中的块级作用域 switch语句中的块级作用 ...
- c语言块级作用域_块级作用域问题ES5 ES6
ES5: 1. 没有块级作用域 在其他类C语言中,由花括号封闭的代码块都有自己的作用域(如果用ECMAScript的话来说,就是它们自己的执行环境), 所以支持根据条件来定义变量. if(true) ...
最新文章
- 微服务架构10个最重要的设计模式
- linux命令关闭电脑,SELinux关闭命令详解linux操作系统 -电脑资料
- P2P in Flash Player 10
- 微服务 Docker和DevOps
- epic怎么添加本地游戏_游戏日报:原神公测无法上架多家安卓渠道;Epic投资布局游戏UGC平台...
- C++字符串完全指南(2) - 各种字符串类- CRT类
- 集五福开奖啦!六年累计7亿人参加 今年你中了多少?
- linux查看java编译版本,升级linux系统中的java版本到1.8
- python改变背景颜色_python中绘图时怎么改背景颜色?
- EPS中编写第一个程序
- MongoDB (芒果)安装说明创建与插入数据
- 区块链入门视频?国外视频帮你快速入门了解区块链!!!
- 基于JAVA疫情防控期间网上教学管理计算机毕业设计源码+系统+mysql数据库+lw文档+部署
- oracle 英文 简历,免费英文简历范文模板
- 从深圳流水线女工到美国谷歌程序员-一位女孩的奋斗史诗
- cocoscreator1.52 删除anysdk
- 新兴研究将如何更好地应对社会挑战?我们等你来共同探讨!
- 工具推荐:用VS code 导出、导入和运行Excel中的VBA代码
- jupyter 内核似乎挂掉了 它很快将自动重启---解决方案
- Linux 脚本执行遇到错误时中止,shell 文件内容替换 sed用法
热门文章
- 云服务器zabbix server报错:Lack of free swap on Zabbix server
- FATAL: password authentication failed for user postgres
- bat shell 命令行中 21 的含义
- 【Oracle】解决oracle sqlplus 中上下左右backspace不能用
- Mysql启动报错解决方案:Failed to open log (file ‘./mysql-bin.000901‘, errno 2)
- ThinkPHP3.2.3 的异常和错误屏蔽处理
- mac下解决中文乱码的问题
- IntelliJ中可能的东西在Eclipse中是不可能的?
- 如何在Shell脚本中漂亮地打印JSON?
- python访问带密码的共享文件夹_设置带密码和读写权限的共享文件夹 - Hakka