• es6


    一.let、var

    1.let所声明的变量,只在let命令所在的代码块内有效。var命令声明的,在全局范围内都有效

    2.var存在变量提升(先引用会出现undefined),let不存在变量提升(先引用直接报错)

    3.暂时性死区   下面代码中,存在全局变量tmp,但是块级作用域内let又声明了一个局部变量tmp,导致后者绑定这个块级作用域,所以在let声明变量前,对tmp赋值会报错。

    1 var tmp = 123;
    2 if (true) {
    3    tmp = 'abc'; // ReferenceError
    4    let tmp;
    5 }

    ES6 明确规定,如果区块中存在letconst命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。typeof运算符也得    变量一定要在声明之后使用,否则就报错。

    var tmp=123;
    if(true){
        tmp='abc';
        console.log(typeof tmp);    //下面若无let tmp,不报错,下面有let tmp  会因为暂时性死区导致未定义之前使用而报错
        let tmp;        
    }

    4.不允许重复声明

    function abc(res){
        {
            let res=2;
            console.log(res);
        }
    }
    abc(1);             //2
    function abcd(res){
        let res;
        console.log(res);
    } 
    abcd(1);        //报错

     补充:

    使用ES6,我们需要全面使用let/const替换var,那么什么时候用let,什么时候用const就成为了一个大家要熟练区分的一个知识点。

    我们常常使用let来声明一个值会被改变的变量,而使用const来声明一个值不会被改变的变量,也可以称之为常量。

    当值为基础数据类型时,那么这里的值,就是指值本身。
    而当值对应的为引用数据类型时,那么我这里说的值,则表示指向该对象的引用。这里需要注意,正因为该值为一个引用,只需要保证引用不变就可以,我们仍然可以改变该引用所指向的对象。

    当我们试图改变const声明的变量时,则会报错。

  • 相关阅读:
    数据库的连接、会话与SQLite
    数据库的连接
    SQlite的结构——存储管理
    数据库 schema含义
    SQLite这么娇小可爱,不多了解点都不行啊
    简析打开数据库流程
    计算机系为什么要学数据库原理和设计?
    SQLite的sqlite3_prepare_v2
    Sqlite3并发读写注意事项
    SQLite也可能出现死锁
  • 原文地址:https://www.cnblogs.com/wanan-01/p/8746545.html
Copyright © 2020-2023  润新知