es6基础语法

一,es6简介
    ECMAScript 是一个标准
    ECMAScript 5.1  2011年发布
    es6就是es5的下一个版本,2015.6发布es6的第一版 es2015, 2016.6发布es6第二个版本 es2016 ,2017年发布es6第三个版本 es2017
    es6 是涵盖了es2015,es2016,es2017等版本
    es6 是严格版的es5
    html5 和 Xhtml1.0
    "use strict";
二。es6基础语法
    1,let
        es6新增的声明变量的关键字
        类似于var 但有所不同
        不同:
            1)作用域不同
                var 声明的变量可以在大括号外调用, let声明的变量只能在代码块内部调用
                代码块:我们认为一个大括号可以封闭一个代码块
            2)没有变量提升
            3)暂时性死区
                使用let声明之前的变量都是不可用的
            4)不允许重复声明
                let不允许在相同作用域内部重复声明同一个变量,所以也是不允许在函数中重新声明参数
    2,块级作用域
        1)es5只有两个作用域
            全局作用域   函数作用域
        2)let 为js 增加了块级作用域
        3)es6 允许块级作用域嵌套
        4)外层作用域无法读取内层作用域的变量
        5)内层作用域可以定义与外层作用域的同名变量
        6)IIFE被抛弃
        7)块级作用域与声明函数
            es5 只允许在顶层作用域或函数作用域中声明函数,不能在块级作用域中声明函数
            es6 兼容浏览器
                1) 允许块级作用域声明函数
                2) 函数声明类似于var,会将函数声明提升到全局作用域或函数作用域的头部
                3) 函数声明会提升到块级作用域的头部
        8) do 表达式(暂时不能用)
            块级作用域是一个语句,将多个操作封装在一起,没有返回值
            在块级作用域以外,没有办法得到内部的值,除非是全局变量
            一个提案,使块级作用域可以变为表达式,也就是说可以返回值,就是使用do表达式
    3. const常量
        1) const 声明一个常量,一旦声明,就不能被改变
        2) 常量一旦声明,必须立即初始化,不能留到以后赋值
        3) const本质
            const其实并不是值不让改变,而是变量指向的内存地址不得改动,对于基本数据类型,值就保存在变量指向的内存地址,所以不能被改变,但是对于对象类型,变量存储的是指针,const能保证这个指针不变,但是数据结构是可以改变的
            如果const定义一个数组,数组本身是可写的,但是要想将一个新的数组赋值给这个arr,就会报错
            const arr=[];
            arr.push('hello');//["hello"]
            console.log(arr);
            arr=['hello'];//报错 Uncaught TypeError: Assignment to constant variable.
    4.顶层对象
        es5中顶层对象是window,顶层对象的属性与全局变量是等价的
        es6规定,var 和 function 命令是全局变量,依旧是顶层对象的属性,但是let和const,class命令的全局变量不属于顶层对象的属性,也就是说es6开始,全局变量逐渐与顶层对象的属性脱钩

你可能感兴趣的:(es6)