ES6笔记1

发布于:2025-07-02 ⋅ 阅读:(27) ⋅ 点赞:(0)

1. var 存在变量提升,let声明变量,不存在变量提升

    console.log(a);  // 输出undefined
    var a = 10;
    var a; // 声明被提升到顶部
    console.log(a);  // 这时候a还没赋值,所以是undefined
    a = 10; // 赋值留在原地
    
    console.log(a);  
    let = 10; 报错

2.  let是一个块作用域
     用{ }包裹的代码块(比如 if、for、while 里的大括号),会形成一个独立的作用域
     用 let/const 声明的变量,只能在这个块里访问,块外面用不了
     
    if (true) {
   var a = 1; // var声明的a在函数作用域里(或全局)
   let b = 2; // let声明的b只在这个if块里有效
   }
   console.log(a);   // 1(var的a跑出来了)
   console.log(b);   // 报错!b在if块外不存在

3. let不能重复声明

4. const 声明常量,一旦被声明,无法修改,其他同let
    
    const person = {
    name: '小马哥'
    };
   // 若想修改对象属性,可这样:person.name = 'alex'; 
    person = {
    age: 20
    };  //这样不行
    console.log(person); 

5. 作用1:for循环是个经典例子,解决var变量提升的问题
    作用2:不会污染全局变量
    
    建议:在默认情况下用const,当知道变量值需要被修改时用let

6. 模板字符串:使用 tab 键上面的反引号 ``, 插入变量时使用 ${变量名}
    const oBox = document.querySelector('.box');
    let id = 1,
    name = '小马哥';
    let htmlStr = `<ul>
    <li>
        <p id=${id}>${name}</p>
    </li>
   </ul>`;
    oBox.innerHTML = htmlStr;

7. 带参数默认值的函数
    function add(a, b = 20) {
    return a + b;
    }
    console.log(add(30));   50

8. 默认的表达是也可以是一个函数
    function add(a, b = getVal(5)) {
    return a + b;
    }

    function getVal(val) {
    return val + 5;
    }
    console.log(add(10));  20

9. 剩余参数:由3个点...和一个紧跟着的具名参数指定 ...keys

ES6写法:

剩余参数(Rest Parameters)(即 ...keys 语法)相比传统的 arguments 对象,主要解决了以下几个痛点:

1、arguments 是类数组对象,没有数组的方法(如 mapfilterforEach 等),操作不便

2、arguments 包含所有参数(包括函数定义的命名参数),需要手动排除第一个参数(如 obj

3、箭头函数没有自己的 arguments,只能访问外层函数的 arguments,容易导致混淆

4、使用 arguments 时,函数定义无法明确表达需要接收多少个参数

10. 扩展运算符...

      剩余运算符:把多个独立的参数合并到一个数组中

      扩展运算符:将一个数组分割,并将各个项作为分离参数传给函数

11. ES6箭头函数()=>{}

返回一个对象:

闭包函数: