ES6新增

一、变量:

1.let声明

  • let 声明的变量具有块级作用域;
  • let 声明变量没有声明变量提升;
  • let声明变量具有暂时性死区;
    ··············如果当前块级作用域有声明的变量,就不会使用上层作用域的变量。

2.const:声明常量

  • const 声明常量具有块级作用域
  • const声明常量必须要赋值
  • const声明常量不能改栈中值
  • let声明变量具有暂时性死区;
    ··············如果当前块级作用域有声明的变

二、数组解构

1.概念:解析数组,把数组中的元素同时赋给多个变量;

 var s=['pink','green','blue'];
        var [name,name1,name2,name3]=s;
        console.log(name,name1,name2,name3);

这里可以打印对应的值;值不够的话就是unfinished;

  • let [变量1,变量2,变量3] = 数组

  • 如果变量的个数多于数组数据个数,则多出来的变量得不到值,值为undefined

  • 如果变量的个数少于数组数据个数,则数组中多出来的元素不赋值,变量按照顺序依次赋值

三、对象解构

1.概念:解析对象,把数组中的元素同时赋值给部分变量;

var ss = { name: 'cui', age: 30 };
        var { name: demo } = ss;
        console.log(demo);
  • 对象结构允许使用变量的名称匹配对象的属性,匹配成功后将对象的属性值赋值给变量
  • 如果对象中没有和变量同名的属性,则不赋值,值为undefined

四、箭头函数

1.概念:()=>{ } 箭头函数用来简化定义语法;
2.使用方式:关键字 函数名=(形参)=>{ 函数体}

  • 如果函数体只操作一行代码,并且是返回值,可以省略{};
  • 如果函数参数只有一个,可以省略();

3.箭头函数里面的this指向

  • 箭头函数中的this指向被定义函数作用域中的this;
  • 箭头函数中的this不可以被bind、call、apply修改;

五、剩余参数

1.概念:箭头函数中无法使用arguments,而是通过剩余参数,…args来接收无形参数;
剩余参数进行数组结构:

 let [s1,...s2] = [1,2,3,4,5];  
 s1 == 1;  s2 == [2,3,4,5]

剩余参数进行对象结构

 let {name:myName,...s2} = {name:"小明",age:20,sex:"男"}; 
 myName == "小明"; 
 s2 == {age:20,sex:"男"}

六、扩展运算符

1.概念:把数据中元素以”,“隔开的序列;
2.Array的扩展方法;

1. Array.from():
将伪数组转化伪数组

  var s={
            "0":'cui',
            "1":20,
            "2":3,
            "length":3,
        } 
        var ss=Array.from(s);
        console.log(ss);
  • 处理函数:处理每一个数据,函数的返回值表示转化之后的结果

  • 伪数组:
    1)有类似于索引值的属性名
    2)有length属性

  • 作用:把伪数组转化为一个真正的数组

2.数组.find():
查找数组,并返回相应的数值;

 var ary=[
            {id:1,
            name:'张三'},{
                id:2,
                name:'李四',
            }
        ]
        let t=ary.find(item=>item.name=='李四');
        console.log(t);
  • 使用方式: 数组.find(处理函数)

    1)处理函数有两个参数,分别是元素和索引值,
    2)如果处理函数返回的是true的时候,就会选出该元素,把该元素返回
    3) 注意,该方法只会选出来一个元素

  • 作用:找到数组中符合某个条件的第一个元素

3.数组.findIndex():
1.概念:查找数组,返回查找到的结果

  • 使用方式:

    1)数组.findIndex(处理函数)

    2)处理函数有两个参数,分别是元素和索引值,
    3)如果处理函数返回的是true的时候,就会选出该元素,把该元素的索引值返回

  • 作用:找到数组中符合某个条件的第一个元素的索引值

4.数组.includes():

  • 判定数组是否包含某个数据

  • 使用方式:
    1)数组.includes(数据)
    2)如果包含则返回 true
    3)如果不包含则返回 false

  • 作用:验证数组中是否有指定的元素

七、 String的扩展方法

  • 模板字符串:使用``来包括字符串,在字符串中使用${}来指定变化内容

  • startsWith():监测字符串是否以指定的字符作为开头

    1)使用方式: 字符串1.startWidth(字符串2) 检测字符串1是否以字符串2作为开头

    2)如果是,则返回值为true,如果不是,则返回值是false

  • endsWith():监测字符串是否以指定的字符作为结尾

    使用方式: 字符串1.endsWith(字符串2) 检测字符串1是否以字符串2作为结尾
    如果是,则返回值为true,如果不是,则返回值是false

  • repeat():将字符串重复指定次数
    使用方式:字符串.repeat(n) 将字符串重复n次,返回新字符串

八、 Set结构:

    与数组类似,但是没有重复的元素

    创建set数据:
        new Set()
        new Set(数组)
    
    set数据.add(新数据):
        把新数据插入到set数据中,返回值是set数据本身
        注意:可以链式编程,多次调用添加多个数据

    set数据.delete(数据):
        把新数据从set数据中删除,返回值是布尔值表示是否删除成功

    set数据.has(数据):
        判断set数据中是否含有新数据,返回值是布尔值表示是否包含该数据

    set数据.clear():
        清空set数据,没有返回值
<think>好的,用户想了解ES6新增的方法和特性,我需要根据提供的引用资料来组织回答。首先,系统指令要求使用中文,并且数学公式要用正确的LaTeX格式,但这里的问题是关于JavaScriptES6,所以可能不需要数学公式。不过要确保行内代码用反引号,独立代码块用三个反引号并指定语言。 用户提供的引用有四个,引用1提到ES6的主要特性,包括let、const,引用3提到数组新增的方法如isArray、from、of,以及实例方法entries、keys、values。引用4详细解释了作用域的变化,从var到let和const的块级作用域。引用2则是总结性的,建议深入学习。 我需要先整理ES6的主要新特性,按照引用中的内容来分类。比如,变量声明、箭头函数、模板字符串、解构赋值、默认参数、类、模块化、Promise、数组方法、对象属性简写、Symbol类型等。每个部分需要结合引用内容,并在适当的位置添加引用标记。例如,在讲let和const时,引用1和4都提到了,所以可能在末尾添加[^1][^4]。 还要注意用户特别提到“新增的方法”,所以需要详细说明数组新增的API如Array.from、Array.of,以及实例方法如entries、keys、values。引用3提到了这些,所以需要标注[^3]。 另外,生成的相关问题要符合用户需求,可能需要包括ES6的其他特性、实际应用、与旧版区别、块级作用域的重要性、Promise解决的回调问题,以及模块化的好处等。要确保每个问题都能引导用户进一步学习,并且问题之间不重复。 最后,保持回答结构清晰,分点列出,每个特性简要说明,并附上代码示例。例如箭头函数可以用一个简单的例子,解构赋值也可以举例说明。同时,代码块要正确使用Python的标记?不,应该是JavaScript的代码示例,所以语言要指定为javascript,比如: ```javascript // 示例代码 ``` 检查是否有遗漏的引用,比如引用2可能用在总结部分,鼓励用户深入学习,所以可能在最后一段提到参考文档时加上[^2]。 现在开始组织内容,确保每个部分都有对应的引用,并且相关问题覆盖用户可能感兴趣的方面。</think>### ECMAScript 2015 (ES6) 新增方法和特性 ES6JavaScript 语言的一次重大更新,引入了多项改进以提升代码简洁性、可读性和功能性。以下是核心新增方法和特性: --- #### 1. **变量声明:`let` 和 `const`** - **`let`**:声明块级作用域的变量,解决了 `var` 的变量提升和重复声明问题。 - **`const`**:声明常量,不可重新赋值,但对象或数组的内容可修改。 ```javascript let count = 10; const PI = 3.1415; ``` #### 2. **箭头函数(Arrow Functions)** 简化函数语法,自动绑定当前作用域的 `this`。 ```javascript const add = (a, b) => a + b; ``` #### 3. **模板字符串(Template Literals)** 支持多行字符串和变量嵌入。 ```javascript const name = "Alice"; console.log(`Hello, ${name}!`); ``` #### 4. **解构赋值(Destructuring)** 简化从数组或对象中提取值的过程。 ```javascript const [x, y] = [1, 2]; // 数组解构 const { age, name } = { name: "Bob", age: 30 }; // 对象解构 ``` #### 5. **函数参数默认值** 允许为函数参数设置默认值。 ```javascript function greet(name = "Guest") { return `Hello, ${name}!`; } ``` #### 6. **类(Class)** 提供更清晰的面向对象语法。 ```javascript class Person { constructor(name) { this.name = name; } sayHi() { console.log(`Hi, I'm ${this.name}`); } } ``` #### 7. **模块化(Modules)** 支持 `import` 和 `export` 语法实现模块化开发。 ```javascript // math.js export const sum = (a, b) => a + b; // app.js import { sum } from './math.js'; ``` #### 8. **Promise 对象** 解决回调地狱问题,优化异步操作。 ```javascript const fetchData = () => new Promise((resolve) => { setTimeout(() => resolve("Data received"), 1000); }); ``` #### 9. **数组新增方法** - **静态方法**:`Array.from()`(类数组转数组)、`Array.of()`(创建数组)[^3]。 - **实例方法**:`entries()`、`keys()`、`values()`(遍历数组索引和值)[^3]。 ```javascript const arr = Array.from("hello"); // ['h', 'e', 'l', 'l', 'o'] ``` #### 10. **对象属性简写与计算属性名** ```javascript const age = 25; const person = { age }; // 等价于 { age: age } const key = "id"; const obj = { [key]: 123 }; // 动态属性名 ``` #### 11. **Symbol 类型** 创建唯一标识符,常用于对象属性键。 ```javascript const sym = Symbol("unique"); ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值