首先我们要明白什么键值对:

        // 键值对('key = value')

        // 顾名思义,每一个键会对应一个值

        // 例:a:身份证号和你本人是绑定的关系,每一个身份证(键)会对应一个人(值)

        // b:登录微信和游戏,需要输入手机号验证身份,手机号码(键)对应接收用户(值)

        // 每个键对应相应的值,按下相应的键时,就会输出相应的结果。

        // 键:就是存的值的编号;值:就是要存放的数据。

接下来就是Map对象:

        // 【Map对象】

        // Map对象用来保存键值对

        // 在Map对象中任何值(对象或者原始值)都可以作为一个键(任何数据类型)或一个值  // 【基本Map方法】

        // new Map():创建新的Map对象

        // set():为Map对象中键设置值

        // get():获取Map对象中键的值

        // keys():返回Map对象中键的数组

        // entries():返回Map对象中键/值对的数组

        // 【Map()属性】

        // Map.size:返回Map中元素的数量

下面是一些代码详解:

// 创建对象
        const ducks = {name:'Ducks'};
        const dogs = {name:'Dogs'};
        const squirrels = {name:'Squirrels'};
        // 创建新的Map对象(new Map())
        const animals = new Map();
        // 向Map 对象添加成员(set())
        animals.set(ducks,111);
        animals.set(dogs,222);
        animals.set(squirrels,333);

        // 获取Map对象中键中的值(get())
        console.log(animals.get(ducks));//111
        // 获取Map对象中键的的数组(keys())
        console.log(animals.keys());
        // 获取Map对象中值的数组(value())
        console.log(animals.values());//{111,222,333}
        // 获取Map对象中键/值对的数组(entries())
        console.log(animals.entries());// {{…} => 111, {…} => 222, {…} => 333}
        // 返回Map中元素的数量(Map.size)
        console.log(animals.size);

【其他Map()方法】

        // clear():删除Map中的所有元素

        // delete():删除由键指定的元素

        // has():如果键存在,则返回true

作用域什么呢?

【作用域】

        // 作用域是运行时代码中某些特定部分中变量,函数和对象的可访问性

        // 作用域决定了代码中变量和其他注意的可见性

function Fun(){
            let a = '内层变量'
            console.log(a);
        }
        Fun();//先执行函数

        function fun (){
            let a = '变量'
            console.log(a);
        }
        fun()
        // console.log(a);//a is notdefined

// 变量a在全局作用域没有声明,所以在全局作用域下取值会报错

        // 作用域是一个独立的地盘,让变量不会不会外泄,暴露出去

        // 作用域最大的用处就是隔离变量,不同作用下同名变量不会有冲突

        // ES6之前Javascript没有块级作用域,只有全局作用域和函数作用域。

        // ES6可以通过新增命令let和const来体现块级作用域

【函数作用域】

//【局部变量/函数作用域】
        // 声明在函数内部的变量,和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到。
        
        function outFun(){
            var a = '函数内部的变量';

            function innerFun(){
                console.log(a);//函数内部的变量
            }
            innerFun();
        }
        // console.log(a);//a is not defined
        innerFun;//inner is not defined
        outFun();