ES6新语法

博客介绍了ES6中变量、字符串和函数的相关扩展。变量有解构赋值;字符串扩展包括includes、startsWith、endsWidth方法及模板字符串;函数扩展有默认值、参数解构赋值、rest参数和扩展参数(箭头函数)等内容。

变量的解构赋值

// ES6之前多变量复制
// var a = 1,b = 2,c = 3;
// console.log(a, b, c)

// ES6变量赋值
// var [a, b, c] = [1,2,3];
// console.log(a, b, c)
// var [e, f, g] = [4,5,6]
// console.log(e, f, g)

// let [h,i,j] = [,666,]  // undefined 666 undefined
// console.log(h,i,j)
// let [a=123,b,c] = [,666,]
// console.log(a,b,c)  // 123 666 undefined

// 对象解构赋值
// let {a,b} = {a : "hello",b : "world"};
// console.log(a,b)  // hello world
// 对象属性别名(如果有了别名,那么原来的名字就无效了)
// let {a:aa,b} = {a : "hello",b : "world"};
// console.log(aa,b)

// 对象的解构赋值指定默认值
// let {a:aa="hello",b} = {b : "world"};
// console.log(aa,b) // hello world

// 字符串的结构赋值(拆分:如果变量不够后面会直接省掉)
// let [a,b,c,d,e] = 'hello';
// console.log(a,b,c,d,e)  // h e l l o
// let {length} = "hello"
// console.log(length) // 5

字符串相关扩展

字符串相关扩展

​ includes(); 判断字符串中是否包含指定的字符串(有的话返回True,没有的话返回false

​ 参数一是匹配的字符串;参数二是第几个开始匹配)

​ startsWith(); 判断字符串是否以特定的字符串开始

​ endsWidth(); 判断字符串是否以特定的字符串结尾

​ 模板字符串:反引号表示模板,模板中的内容可以格式,通过${}方式填充数据

// includes()
// console.log("hello world".includes("world")) // true
// console.log("hello world".includes("world",6)) // true

// startsWith()
let url = 'admin/index/'
console.log(url.startsWith("admin"))

let url1 = 'home/login/'
console.log(url1.endsWith("login/"))
// 模板字符串
let obj = {
    name : "jim",
    age : '12',
    gender : 'male'
}

//传统的模板(无格式)
let tag = '<div><span>'+obj.name+'</span><span>'+obj.age+'</span><span>'+obj.gender+'</span></div>'
console.log(tag)
// ES6新的模板字符串(有格式的):反引号表示模板,模板中的内容可以格式,通过${}方式填充数据
let new_tag = `
                <div>
                    <span>${obj.name}</span>
                    <span>${obj.age}</span>
                    <span>${obj.gender}</span>
                </div>`
console.log(new_tag)

函数相关扩展

函数扩展

​ 1、函数默认值

​ 2、参数解构赋值

​ 3、rest参数

​ 4、…扩展参数(箭头函数)

// 默认值参数
 // 传统的
//  function fn(param){
//      let p = param || 'hello';
//      console.log(p);
//  }
//  fn(); // hello
//  fn("world") // world
// ES6新的
// function fn(param = "hello"){
//     console.log(param);
// }
// fn() // hello
// fn("world") // world


// 参数的解构赋值
// function fn(uname='jim',age=12){
//     console.log(uname,age)
// }
// fn();
// fn("tom",17)

// // 解构赋值的用法(当你参数传的是对象时,在调用是也需加入{}去调用,或者在参数部分加上={})
// function func({uname='jerry',age=10}={}){
//     console.log(uname,age);
// }
// func()


// rest参数(剩余参数)
// function fn(a,b,...param){
//     console.log(a);
//     console.log(b);
//     console.log(param)
// }
// fn(1,2,3,4,5,6) // param会接收剩余参数,以列表的形式

// function func(a,b,c,d,e){
//     console.log(a+b+c+d+e)
// }
// let arr = [1,2,3,4,5,6]
// func(...arr) // 15


// 合并数组
// let arr1 = [1,2,3]
// let arr2 = [4,5,6]
// let arr3 = [...arr1,...arr2];
// console.log(arr3)


// 箭头函数
// function fn(){
//     console.log("hello world!")
// }
// fn() // 常规调用方式

// // 箭头函数的简单实例(箭头后面的为函数体)
// let func=() => console.log("hello world!")
// func()

// ***带参数的箭头函数(带一个参数)
// 等效于小面的箭头函数
// function fn(v){
//     return v
// }

// let func = v => v
// let res = func(5)
// console.log(res)

// 带参数的箭头函数(多个参数)
// let fn = (a,b) => console.log(a,b)
// fn(6,7)

// 带参数的箭头函数(多个参数),且函数体还有参数的(这种情况后面必须用花括号括起来)
// let fn = (a,b) => {let c=1; console.log(a+b+c)}
// fn(2,3)

// 函数体内的箭头函数
// 传统的
// let arr = [1,2,3]
// arr.forEach(function(element,index){
//     console.log(element,index)
// })
// 使用箭头函数
// let arr1 = [4,5,6]
// arr1.forEach((element,index)=>{
//     console.log(element,index);
// })

// 箭头函数的注意事项
// 1、箭头函数中this取决于函数定义,而不是调用
// function foo(){
//     // console.log(this.num); // 100
//     setTimeout(()=>{
//         // 使用call调用foo是,这里的this其实就是call的第一个参数
//         console.log(this.num);
//     },1000)
// }
// foo.call({num:100})

//2、箭头函数不可以new
// let foo = () => {this.num = 123};
// new foo() //报错

//3、箭头函数不可以使用arguments获取参数列表,可以使用rest参数代替
### 介绍ES6语法特性 ES6(ECMAScript 2015)引入了多种特性,极大地增强了JavaScript的表达能力和开发效率。以下是一些重要的语法特性及其示例。 #### 块级作用域变量声明 ES6引入了`let`和`const`关键字,用于定义块级作用域的变量和常量。与传统的`var`不同,`let`和`const`不会提升到其作用域的顶部,并且仅在其声明的代码块内有效。 ```javascript if (true) { let blockScopedVar = "I am block-scoped."; const constantVar = "I am constant."; } console.log(blockScopedVar); // 抛出错误: blockScopedVar is not defined ``` #### 箭头函数 箭头函数提供了一种更加简洁的函数书写方式,并且不绑定自己的`this`值,它继承自外围作用域。 ```javascript const add = (a, b) => a + b; console.log(add(2, 3)); // 输出5 ``` #### 模板字符串 模板字符串使用反引号(`)来包围字符串,并允许在字符串中嵌入表达式。 ```javascript const name = "Alice"; const greeting = `Hello, ${name}!`; console.log(greeting); // 输出"Hello, Alice!" ``` #### 默认参数值 函数参数可以具有默认值,这使得在调用函数时如果未提供参数,则使用默认值。 ```javascript function multiply(a, b = 1) { return a * b; } console.log(multiply(5)); // 输出5 ``` #### 解构赋值 解构赋值允许从数组或对象中提取数据并赋值给变量。 ```javascript const [first, second] = [1, 2]; console.log(first, second); // 输出1 2 const {name: personName, age: personAge} = {name: "Bob", age: 30}; console.log(personName, personAge); // 输出Bob 30 ``` #### 类(Class) ES6引入了类的概念,为基于类的面向对象编程提供了更清晰的语法。 ```javascript class Rectangle { constructor(height, width) { this.height = height; this.width = width; } } const square = new Rectangle(5, 5); console.log(square); // 输出Rectangle { height: 5, width: 5 } ``` #### 私有属性 通过在属性名前加上井号(#),可以在类中定义私有属性,这些属性只能在类的内部访问[^4]。 ```javascript class App { #color = "红色"; showColor() { console.log("这是~~~" + this.#color); } } const app = new App(); app.showColor(); // 输出"这是~~~红色" ``` #### 模块化 ES6模块化语法支持将代码分割成多个文件,每个文件作为一个模块,可以导出功能供其他模块导入使用。 ```javascript // math.js export function add(a, b) { return a + b; } // main.js import { add } from './math.js'; console.log(add(2, 3)); // 输出5 ``` #### Array.of() Array.of()方法创建一个数组,其参数直接成为数组元素。 ```javascript const newArr = Array.of('A','B','C'); console.log(newArr); // 输出["A", "B", "C"] ``` 以上是ES6的一些主要语法特性,它们不仅提高了代码的可读性和维护性,而且也使JavaScript能够更好地适应大型应用的开发需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值