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没有块级作用域相关推荐

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

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

  2. JS 没有块级作用域

    在函数(方法)中声明的所有变量,他们在整个函数中都有定义 var scope="abc"; function f() { alert(scope);  //显示undefine v ...

  3. 前端学习(753):js没有块级作用域

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

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

  5. 浅谈js中的var和function变量提升,var声明变量提升,块级作用域中的函数提升

    1.首先最常见的一种变量提升 console.log(a); //输出 undefinedvar a=10;console.log(a) // 输出 10 var 有提升的作用其实上面的代码会变成会变 ...

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

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

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

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

  8. 你真的懂switch吗?聊聊switch语句中的块级作用域

      最近在代码中不小心不规范的,在switch里面定义了块级变量,导致页面在某些浏览器中出错,本文讨论以下switch语句中的块级作用域. switch语句中的块级作用域 switch语句中的块级作用 ...

  9. c语言块级作用域_块级作用域问题ES5 ES6

    ES5: 1.  没有块级作用域 在其他类C语言中,由花括号封闭的代码块都有自己的作用域(如果用ECMAScript的话来说,就是它们自己的执行环境), 所以支持根据条件来定义变量. if(true) ...

最新文章

  1. 微服务架构10个最重要的设计模式
  2. linux命令关闭电脑,SELinux关闭命令详解linux操作系统 -电脑资料
  3. P2P in Flash Player 10
  4. 微服务 Docker和DevOps
  5. epic怎么添加本地游戏_游戏日报:原神公测无法上架多家安卓渠道;Epic投资布局游戏UGC平台...
  6. C++字符串完全指南(2) - 各种字符串类- CRT类
  7. 集五福开奖啦!六年累计7亿人参加 今年你中了多少?
  8. linux查看java编译版本,升级linux系统中的java版本到1.8
  9. python改变背景颜色_python中绘图时怎么改背景颜色?
  10. EPS中编写第一个程序
  11. MongoDB (芒果)安装说明创建与插入数据
  12. 区块链入门视频?国外视频帮你快速入门了解区块链!!!
  13. 基于JAVA疫情防控期间网上教学管理计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  14. oracle 英文 简历,免费英文简历范文模板
  15. 从深圳流水线女工到美国谷歌程序员-一位女孩的奋斗史诗
  16. cocoscreator1.52 删除anysdk
  17. 新兴研究将如何更好地应对社会挑战?我们等你来共同探讨!
  18. 工具推荐:用VS code 导出、导入和运行Excel中的VBA代码
  19. jupyter 内核似乎挂掉了 它很快将自动重启---解决方案
  20. Linux 脚本执行遇到错误时中止,shell 文件内容替换 sed用法

热门文章

  1. 云服务器zabbix server报错:Lack of free swap on Zabbix server
  2. FATAL: password authentication failed for user postgres
  3. bat shell 命令行中 21 的含义
  4. 【Oracle】解决oracle sqlplus 中上下左右backspace不能用
  5. Mysql启动报错解决方案:Failed to open log (file ‘./mysql-bin.000901‘, errno 2)
  6. ThinkPHP3.2.3 的异常和错误屏蔽处理
  7. mac下解决中文乱码的问题
  8. IntelliJ中可能的东西在Eclipse中是不可能的?
  9. 如何在Shell脚本中漂亮地打印JSON?
  10. python访问带密码的共享文件夹_设置带密码和读写权限的共享文件夹 - Hakka