1. 变量

      1. var———>var demo=123;(有变量提升,全局作用域,可重复声明)
      2. let———->let demo=123;(无变量以提升,块级作用域,不可重复声明)
        1. function test(){
        2. bcd=10;
        3. }
        4. console.log(bcd)
        不会报错,并且属于window。因为默认给window添加一个属性,将bcd并赋值10
    2. 常量

      1. const——->const demo=234(必须赋初始值,并且不能被修改,数组和对象可通过下标和key修改,因为存储指针指向不同)
    3. 连等赋值 ```javascript function test(){ var a=b=c=1; } test() conslole.log(a)//报错 conslole.log(b)//1 conslole.log(c)//1
    1. b,c不会报错,并且属于window。因为默认给window添加一个属性
    2. 4. 优先级------>变量>函数>参数
    3. ```javascript
    4. function test(a) {
    5. function a() {
    6. }
    7. var a = 1
    8. console.log(a);//1
    9. }
    10. test(2)
    11. ------------------------------2------------------------------
    12. function test(a) {
    13. function a() {
    14. }
    15. console.log(a);//function
    16. }
    17. test(2)