A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 AreYouGlad 于 2017-12-20 11:53 编辑



ECMAScript6
ES6也称为ECMAScript2015,是2015年出版的javaScript国际新标准,标准的制定者计划,以后每年发布一次标准,使用年份作为版本号,ES6是在2015年发布的,所以又称为ECMAScript2015,2016年发布的标准即为ES7。
主要升级内容
  • 字符编码
  • 新字符串
  • 增强计算api:  SIMD,Math
  • 增强正则
  • 变量赋值 模式匹配
  • 函数式编程
  • 函数新数据结构set , map
  • 二进制数组语法糖
  • 后端语言特性  class ,const , decorator,Iterator
  • 将部分库移植到标准  proxy , iterator , promise , module , object , Async
  • 新概念 Generator/yield , symbol
资料
let与const

新的变量定义方式。
let
  • 作用:

    • 替代var关键字定义变量

  • 特点:

    • 不允许重复声明
    • 块级作用域
    • 没有预解析
    • 存在暂时性死区
    • 全局变量不再是window属性

const
  • 作用:

    • 定义常量

  • 特点:

    • 不允许重复声明
    • 块级作用域
    • 没有预解析
    • 存在暂时性死区
    • 全局变量不再是window属性
    • 定义时必须赋值,同时不允许修改

特点演示
  • 不允许重复声明

[JavaScript] 纯文本查看 复制代码
// SyntaxError,在语法分析时就报错
let a = 10;
let a = 20;
function fn(arg) {
        let arg;
}
fn(10); // SyntaxError
  • 块级作用域
[JavaScript] 纯文本查看 复制代码
{
        let a = 10;
        console.log(a); // 10
}
console.log(a);  // ReferenceError
  • 没有预解析
[JavaScript] 纯文本查看 复制代码
console.log(a);  // ReferenceError
let a = 10;

  • 存在暂时性死区
  • 即在某作用域内如果存在let、const声明的变量常量。
  • 如果在声明前使用它们就报错,也不会从上级作用域中查找。
[JavaScript] 纯文本查看 复制代码
let a = 10;
{
        console.log(a);  // ReferenceError
        let a = 20;
}

  • 全局变量不再是window属性
[JavaScript] 纯文本查看 复制代码
let a 10;
console.log(a); // 10
console.log(window.a); // undefined

  • const定义常量时必须一起赋值
[JavaScript] 纯文本查看 复制代码
const NAME;  // SyntaxError;

  • 常量的值不允许修改
[JavaScript] 纯文本查看 复制代码
const NAME = '地球';
NAME = '火星';  // TypeError

使用场景
  • 防止变量污染
[JavaScript] 纯文本查看 复制代码
let i = 10;
for(let i = 0; i < 3; i++) {
        console.log(i);
}
console.log(i); // 10

  • 帮助预防潜在错误
[JavaScript] 纯文本查看 复制代码
console.log(a + b); // RefrenceError
let a = 10;
let b = 20;

  • 常量特性
[JavaScript] 纯文本查看 复制代码
const PI = 3.1415926;
PI = 2.1415926;  // TypeError

2 个回复

倒序浏览
回复 使用道具 举报
不错,不错。学习ing....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马