JavaScript-ES6

ES6概念

ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。

ES6语法

1.var、let、const关键字

1.1 let局部变量

  • 1.局部作用域(用一对{}开启),变量只在所处的块级有效
if (true) { 
  var a = 10; // 使用 var
}
console.log(a) // 10
// 如果是使用 var,即使是在{}外面也能正常访问 a,这显然是不合理的
if (true) { 
  let a = 10; // 使用 let
}
console.log(a) // 报错:a is not defined
  • 2.不能变量提升,可以防止循环变量变成全局变量
for (var i = 0; i < 2; i++) {} // 使用 var
console.log(i); // 2  i变成了全局变量

for (let i = 0; i < 2; i++) {} // 使用 let
console.log(i); // 报错:i is not defined
  • 3.变量必须先声明再使用
console.log(a);
var a = 20; // 使用 var
// 打印:undefined

console.log(a); // 报错:Cannot access 'a' before initialization
let a = 20; // 使用 let

1.2 const常量

声明常量,常量就是值或者内存地址不能变化的量

  • 1.具有块级作用域
if (true) { 
    const a = 10;
}
console.log(a) // a is not defined
  • 2.声明常量时必须赋值
const b; // 报错:Missing initializer in const declaration
  • 3.常量赋值后,值不能修改
//对于基本数据类型,值不能修改
const PI = 3.14;
PI = 100; // Assignment to constant variable. 

//对于复杂数据类型,指针指向的内容不能修改
const ary = [100, 200];
ary[0] = 'a';
ary[1] = 'b';
console.log(ary); // ['a', 'b']; 
ary = ['a', 'b']; // 报错:Assignment to constant variable.

1.3 var、let、const的区别

varletconst
全局作用域局部作用域局部作用域
变量提示不能变量提升不能变量提升
值可更改值可更改值不可更改

2.解构

2.1数组解构

允许我们按照一一对应的关系从数组中提取值,然后将值赋值给变量

let [a, b, c, d, e] = [1, 2, 3]; //等号左边不代表数组,代表结构,里面是变量,等号右边是数组
console.log(a) //1
console.log(b) //2
console.log(c) //3
console.log(d) //undefined
console.log(e) //undefined
// 如果解构不成功,变量的值为undefined
var arr=[1,2,3,4,5]
var [a,b,...rest]=arr
console.log(a,b,rest) //a:1;b:2;rest:[3,4,5]

2.2对象解构

允许我们使用变量的名字匹配对象的属性,如果匹配成功,将对象属性的值赋值给变量。

let [a, b, c, d, e] = [1, 2, 3]; //等号左边不代表数组,代表结构,里面是变量,等号右边是数组
console.log(a) //1
console.log(b) //2
console.log(c) //3
console.log(d) //undefined
console.log(e) //undefined
// 如果解构不成功,变量的值为undefined
var obj={name:"binbin",age:"18",eye:"2",leg:"4"}
var {name,age,leg,...rest}=obj
console.log(name,age,leg,rest) //输出结果:binbin 18 4 {eye:"2"}

3.箭头函数

ES6中新增的快速定义函数的方式,用来简化函数定义语法。

() => {}  // ()代表是函数,=>必须要的符号,指向哪一个代码块,{}函数体
const fn = () => {} // 代表把一个箭头函数赋值给fn

3.1.函数体中只有一句代码,且代码的执行结果就是返回值,可以省略大括号

//传统写法 
function sum(num1, num2) { 
     return num1 + num2; 
 }
//es6写法
const sum = (num1, num2) => num1 + num2; 

3.2.如果形参只有一个,可以省略小括号

//传统写法 
function fn (v) {
     return v;
 } 
//es6写法
const fn = v => v;

3.3.箭头函数的this

调用方式this指向
普通函数调用window
构造函数调用实例对象,原型对象里面的方法也指向实例对象
对象方法调用该方法所属对象
事件绑定绑定事件对象
定时器window
立即执行函数window

箭头函数不绑定this关键字(也就是箭头函数没有自己的this),箭头函数中的this,指向的是函数上一层作用域的this

4.函数参数

4.1.函数的默认参数

function say(color="黑色"){
	alert("没有你的世界是"+color+"的")
}
say()
say("五彩斑斓")

4.2.函数的拓展实参(调用)

//在函数调用时把数组传入拓展
function meeting(a1,a2,a3){
	console.log(`参加这次聚会的有${a1},${a2},${a3}`)
}
var arr=["沸羊羊","双面龟","黑小虎","你"]
meeting(...arr)
meeting.apply(null,arr)

4.3.函数的不定参数(定义时)

function add(...list){ //把所有单个参数,接收为一个叫list的数组
alert(list.reduce((a,b)=>a+b))
}
add(1,2,3,4)

5.字符串扩展方法

5.1.遍历

var str="yue𠮷口"
for(var i=0;i<str.length;i++){
	console.log(str[i])
}
//es6------for of遍历
for(let k of str){
	console.log(k)
}

5.2.trim去除两端空白

var str="     喜洋洋 美羊羊 懒洋洋 沸羊羊"
console.log(str.trimLeft()) //trimLeft:去除左端空白,trimRight:去除右端空白

5.3.repeat重复

console.log("远\n".repeat(100))//重复执行100次

5.4.includes检测是否包含,返回boolean

var str="四大舔狗:双面龟,黑小虎,沸羊羊,你"
alert(str.includes("你"))//true

5.5.startwidth,endwidth 以…开头/结尾,返回boolean

var str="我爱你"
console.log(str.startsWith("我"))

5.6.padStart(位数,填充字符串),padEnd

var str="1"
console.log(str.padStart(3,"0")) //结果:001
console.log(str.padEnd(5,"1")) //结果:11111

5.7.``字符串模板

ES6新增的模板字符串,使用反引号定义
模板字符串中可以解析变量,格式是:${变量名}

在模板字符串中可以调用函数,格式是:${函数调用}
模板字符串中可以换行

var s="四大舔狗"
var str=`${s.length>4?"噜啦":"呼呼"}:沸羊羊,黑小虎,双面龟,你`
console.log(str)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值