谷粒商城学习——P31-33函数优化&ES6箭头函数&对象优化&map和reduce
函数参数默认值
在ES6以前,我们无法给一个函数参数设置默认值,只能采用变通写法:
function add(a, b) { // 判断b是否为空,为空就给默认值1 b = b || 1; return a + b; }
es6可以直接给参数写上默认值,没传就会自动使用默认值
function add2(a, b = 1) { return a + b; }
类似java的...不定参数
function fun(...values) { console.log(values.length) }
箭头函数
<script>
// 以前
var print = function (obj1,obj2) {
console.log(obj1,obj2);
}
print("hello1","hello2");//输出“hello1 hello2”
//箭头函数
var print = (obj1,obj2) => console.log(obj1,obj2);
print("hello2","hello3");//输出“hello2 hello3”
</script>
可以看出,箭头函数,省略了function,用=>代替了{}。当一个参数时,可省略参数的()
箭头函数的解构
<script> const person = { name: "jack", age: 21, language: ['java', 'js', 'css'] } //以前 function hello(person) { console.log("hello," + person.name+person.age); } hello(person);//输出“hello,jack21” //箭头函数+解构 var hello2 = (person) => console.log("hello," + person.name + person.age); hello2(person);//输出“hello,jack21” //箭头函数+解构 var hello3 = ({name,age}) => console.log("hello," + name + age); hello3(person);//输出“hello,jack21” </script>
所谓解构,就是传参可以不传对象只传属性名(属于名必须属于对象),且用对象的{}括起来
对象优化新增的api
<script> const person = { name: "jack", age: 21, language: ['java', 'js', 'css'] } console.log(Object.keys(person)); //["name", "age", "language"] console.log(Object.values(person)); //["jack", 21, Array(3)] console.log(Object.entries(person)); //[Array(2), Array(2), Array(2)] </script>
类似Map用法没什么值得说的
assign合并assign(dest,...src):将多个src对象的值拷贝到dest中,(第一层深拷贝,第二层浅拷贝???不知道深浅啥意思)
<script>
//2)、声明对象简写
const age = 23
const name = "张三"
const person1 = {age: age,name: name}
// 简写:属性名和属性值的变量名相同时,可以只写属性名
const person2 = {age,name}
console.log(person2);
</script>
对象函数的属性简写
初觉花里胡哨的,不想写。再想想,想到和java语法一样了就豁然开朗了
<script>
//3)、对象的函数属性简写
let person3 = {
name: "jack",
// 以前:
eat: function(food) {
console.log(this.name + "在吃" + food);
},
//箭头函数this不能使用,要使用的话需要使用:对象.属性
eat2: food => console.log(person3.name + "在吃" + food),
//箭头函数想使用this,就和java语法一样了
eat3(food) {
console.log(this.name + "在吃" + food);
}
}
person3.eat("香蕉");
person3.eat2("苹果")
person3.eat3("橘子");
</script>
对象(深拷贝)与合并对象
个人浅见,就是一个语法,花括号中的任意多个参数合并为一个对象。let newObj={agr,agr2,agr3,.....}
...对象是取对象的所有参数
<script> let age1 = { age: 15 } let name1 = { name: "Amy" } let p2 = {name:"zhangsan"} p2 = { ...age1, ...name1,'lisi':'lisi' } console.log(p2)//{age: 15, name: "Amy", lisi: "lisi"},原对象的值会被覆盖 </script>
map和reduce
<script>
//map,将数组中的每个元素处理后,返回新的数组
let arr = ['1', '20'];
arr = arr.map(item=> item*2);
console.log(arr);//[2, 40]
//reduce() 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,
//reduce感觉没卵用啊
let result = arr.reduce((a,b)=>{
console.log("上一次处理后:"+a);
console.log("当前正在处理:"+b);
return a + b;
},100);
console.log(result)
</script>

本文来自博客园,作者:每天都要学一点,欢迎讨论和转载,转载请注明原文链接:https://www.cnblogs.com/yanan7890/p/14869169.html

浙公网安备 33010602011771号