<script>
var a=1; //var声明的变量会变量提升
console.log(a);
{
let b=2; //let声明的变量有严格的作用域,且同一个变量只能用let声明一次
console.log(b);
}
const c=3; //常量
console.log(c);
//数组解构
let arr=[1,2,3];
let [x,y,z] = arr;
console.log(x,y,z);
//对象解构
const person={
name:"jarvis",
age:17,
language:["Java","C#","Python"]
}
let {name,age,language} = person;
console.log(name,age,language);
//字符串扩展
let str="hello,Vue!";
console.log(str.startsWith("hel"));
console.log(str.endsWith("ue!"));
console.log(str.includes("llo"));
//字符串模板 反引号
let ss=`<div>
<span>hello world</span>
</div>
`
console.log(ss);
//字符串插入变量和表达式
let info=`我是${name},今年${age+3}岁`; //反引号中才能使用${}
console.log(info);
//ES6之前,无法给一个函数参数设置默认值,只能采用变道写法
function add(a,b){
b=b || 1; //如果b没有传值,默认为1
return a+b;
}
console.log(add(10));
//ES6之后的写法:
function add2(a,b=1){
return a+b;
}
console.log(add(100));
//不定参
function add3(...vals){
console.log(vals.length);
}
add3(1,2,3,4,5,6,7,8,9)
//ES6之前声明一个方法
var print = function(obj){
console.log(obj);
}
print(456465);
//ES6以后,箭头函数
var print2 = obj=>{console.log(obj);};
print2(852369)
var mySum = (a,b,c) => a+b+c; //只有一行,可省略return和{} 或者: =>{ return a+b+c; }
console.log(mySum(10,20,30));
//箭头函数+解构
var hello=({name})=>console.log("hello,"+name);
hello(person);
//
console.log(Object.keys(person)); // ["name", "age", "language"]
console.log(Object.values(person)); // ["jarvis", 17, Array(3)]
console.log(Object.entries(person)); // (3) [Array(2), Array(2), Array(2)]
//对象合并
const t1 = {a:1};
const t2 = {b:2};
const t3 = {c:3};
Object.assign(t1,t2,t3); //第一个参数是最终合并的对象
console.log(t1); //{a: 1, b: 2, c: 3}
//声明对象简写
//ES6之前:
name = "诺亚";
age = 250000;
const p1 = {name:name,age:age};
console.log(p1);
//ES6之后:如果属性名和变量一样,则可以简写如下
const p2 = {name,age};
console.log(p2)
//对象的函数属性简写
let p3 = {
name:"雷杰多",
eat:function(food){
console.log(this.name + "在吃" + food);
},
eat2:(food) => console.log(this.name + "在吃" + food), //箭头函数在这里使用【this.属性】会丢失对象的属性值,需要使用【对象.属性】
eat3:(food) => console.log(p3.name + "在吃" + food),
eat4(food){
console.log(p3.name + "在吃" + food);
}
}
p3.eat("香蕉"); //雷杰多在吃香蕉
p3.eat2("苹果"); //在吃香蕉
p3.eat3("小怪兽"); //雷杰多在吃小怪兽
p3.eat4("大怪兽"); //雷杰多在吃大怪兽
//拷贝对象(深拷贝)
let p4 = {name:"撒加",age:12345600};
let p5 = {...p4};
console.log(p5); //{name: "撒加", age: 12345600}
//数组的map方法
let array1 = [10,50,90,170];
array1 = array1.map((item)=>{
return item * 2;
})
console.log(array1); //[20, 100, 180, 340]
//数组的reduce方法 reduce(callback,[initialValue]) 参数如下:
// 1. previousValue(上一次调用回调函数返回的值,或者是提供的初始值--initialValue)
// 2. currentValue(当前被处理的元素)
// 3. index(当前元素在数组中的索引)
// 4. array(调用reduce的数组)
let array2 = [1,2,3,4,5];
let res = array2.reduce((a,b)=>{
console.log("上一次处理后:"+a);
console.log("当前正在处理:"+b);
console.log("index"+array2.index);
return a+b;
},100)
console.log("res="+res); //115=100+1+2+3+4+5
</script>
ES6新特性
最新推荐文章于 2024-07-06 00:11:00 发布