首先,一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系?

ECMAScript是一个国际通过的标准化脚本语言。JavaScript由ECMAScript和DOM、BOM三者组成。可以简单理解为:ECMAScript是JavaScript的语言规范,JavaScript是ECMAScript的实现和扩展。

2011 年,ECMAScript 5.1 版发布。之前我们大部分人用的也就是ES5

2015 年 6 月,ECMAScript 6 正式通过,成为国际标准。

1. 块级作用域 {}
        ES5 中作用域有:全局作用域、函数作用域。没有块作用域的概念。

ES6 中新增了块级作用域。块作用域由 { } 包括,if语句和 for语句里面的{ }也属于块作用域。

<script type="text/javascript">

    {
var a = 1;
console.log(a); //
}
console.log(a); //
// 通过var定义的变量可以跨块作用域访问到。 (function A() {
var b = 2;
console.log(b); //
})();
// console.log(b); // 报错,
// 可见,通过var定义的变量不能跨函数作用域访问到 if(true) {
var c = 3;
}
console.log(c); //
for(var i = 0; i < 4; i ++) {
var d = 5;
};
console.log(i); // 4 (循环结束i已经是4,所以此处i为4)
console.log(d); //
// if语句和for语句中用var定义的变量可以在外面访问到,
// 可见,if语句和for语句属于块作用域,不属于函数作用域。 </script>

2. var、let、const的区别

  1. var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。
  2. let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
  3. const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。
 <script type="text/javascript">
// 块作用域
{
var a = 1;
let b = 2;
const c = 3;
// c = 4; // 报错
var aa;
let bb;
// const cc; // 报错
console.log(a); //
console.log(b); //
console.log(c); //
console.log(aa); // undefined
console.log(bb); // undefined
}
console.log(a); //
// console.log(b); // 报错
// console.log(c); // 报错 // 函数作用域
(function A() {
var d = 5;
let e = 6;
const f = 7;
console.log(d); //
console.log(e); // 6
console.log(f); // 7 })();
// console.log(d); // 报错
// console.log(e); // 报错
// console.log(f); // 报错
</script>

最新文章

  1. laravel administrator 一款通用的后台插件(PHP框架扩展)
  2. 实验三 敏捷开发与XP实践
  3. WinForm------分页控件dll下载地址
  4. 转载_虚拟机下LInux(终端)配置网络的方法
  5. error MSB6006: &ldquo;cmd.exe&rdquo;已退出,代码为 3。
  6. docker基本概念,创建、起动实例,保存自定义镜像等常用操作
  7. 【转载】C#后台声明式验证,远离if验证
  8. hadoop2.2编程: Interation
  9. Xamarin Android自定义文本框
  10. Java | 原来 try 还可以这样用啊?!
  11. ORACLE跨数据库查询的方法
  12. mysql数据表的基本操作
  13. Eclipse中修改jsp、html……的编码格式
  14. js判断用户的浏览器
  15. TNS:listener does not currently know of service requested in connect descriptor错误改正
  16. 从概率图模型pgm到rbm
  17. 安装配置fastDFS文件服务器 - Linux
  18. 装了appserv之后,浏览器中访问localhost加载不了
  19. hdu-1892-二维BIT
  20. Banner中文字怎么排版才好看?

热门文章

  1. Backup--如何快速截断日志
  2. IdentityServer4与ocelot实现认证与客户端统一入口
  3. OCP换考题了,052新考题及答案整理-第17题
  4. TCP/IP学习笔记(2)-数据链路层
  5. [ActionScript 3.0] 利用InteractivePNG.as类精确选择识别png图片有像素的区域
  6. Jupyter Notebook远程服务器配置[转]
  7. 在通知栏上玩游戏,Steve iOS 游戏实现思路
  8. scrapy连接MongoDB
  9. [inside hotspot] 汇编模板解释器(Template Interpreter)和字节码执行
  10. 通过Maven简单搭建SSM框架