zoukankan      html  css  js  c++  java
  • ES6-let命令

    let命令

    • 用于声明变量,但是声明的变量只能在let命令所在的代码块内有效,

        {
         let a = 10;
         var b = 1; 
        }
      

      其中,a在代码块的外部是调用不到的。对于for循环的计数器里面,就很适合let命令。

    • 不存在变量声明
      let不像var一样有变量声明,所以变量一定要在声明后使用。

    • 暂时性死区
      只要块级作用域内存在let命令,它所声明的变量就“绑定”这个区域,不再受外境影响。

            var  tmp = 123;
            if(ture){
                tmp = "axs";//error
                let tmp;
            }
       在代码内,使用let命令声明变量之前,该变量都是不可用的。这在语法上称为“暂时性死区”。es6这样规定,主要是为了减少运行时错误,防止在变量声明前使用这个变量,从而导致意料之外的行为。暂时性死区的本质就是,只要进入当前作用域,所要使用的变量就已经存在,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用变量。
      
    • 不允许重复声明
      let不允许在相同的作用域内重复声明同一个变量。

    块级作用域

    • es5只有全局作用域和函数作用域,没有块级作用域,这带来了很多不合理的场景。如:内层变量可能会覆盖外层变量;用来计数的循环变量会泄露为全局变量。

        function fl(){
           let n  = 5;
           if(ture){
               let n = 10;
           }
           console.log(n);//5
        }    
      

    如果使用var,则会输出10。除此之外,es6还允许块级作用域任意嵌套。

    const命令

    const用来声明常量,一旦声明,他的值就不可以改变。而且,一旦声明,就必须立即被初始化,不能留到后面去赋值。他的作用域也只能在声明所在的块级作用域内有效。没有变量提升,同样存在暂时性死区,只能在声明后使用。

    补充:跨模块常量:采用下面下法:
         export const A=1
  • 相关阅读:
    次奥,这不是激活界面嘛/?还原装?!@坑 了
    关于mysql_fetch_****
    如何把Excel数据转化成SQL语句转
    Failed to execute query: Duplicate entry '0' for key 'PRIMARY'
    addEventListener事件监听传递参数
    有关AS3编程的一些总结读取汉字
    用flash制作SWC文件,生成flex自定义组件【站优教程】
    前端架构师的思考
    一个禁止flash右键的方法
    为何要面向接口编程?
  • 原文地址:https://www.cnblogs.com/yehui-mmd/p/6284973.html
Copyright © 2011-2022 走看看