JS高级-01

箭头函数

// 箭头函数
const func3 = () => {
console.log("func3");
};
func3();

箭头函数省略写法

小括号省略

// 箭头函数传参
// 如果只传一个参数,小括号可以省略。const func2 a => {console.log(a);};
// 如果不传参数 或者传多个参数,小括号不能省略

const func2 = (a, b) => {
console.log(a, b);
};

//小括号可以省略
const func3 = a => {
console.log(a);
};
//调用
func2("2", "3");
func3("456");

大括号省略

const func1 = () => {
return 123;
};
console.log(func1());

// 简洁返回值的写法,如果函数代码只有一行,那么大括号可以省略,同时,这一行代码运行结果也会被直接返回
// 省略大括号,建议代码不要换行
const func2 = (a) => a + 1;
const num = func2(2);
console.log(num);

const func3 = (a) => console.log(a);
func3(123);

// const func4 = a => a + 1;
// const num2 = func2(5);
// console.log(num2);    //结果6

返回对象

箭头函数返回值为对象时,如果要省略大括号,那么对象得用小括号包起来

const func1 = () => 123;
const func2 = () => true;
const func3 = () => "哈哈哈";
const func4 = () => [1, 2, 3, 4, 5];
// 调用并输出
console.log(func1());
console.log(func2());
console.log(func3());
console.log(func4());

// 箭头函数如果在省略大括号时,返回值是对象就得用()小括号包起来
const func5 = (a) => ({ name: "哈哈哈", age: 18 });
console.log(func5());

默认值

// (msg="你好")  你好就是mag的默认值
// 如果调用函数时,没有传递参数,就使用默认值
// 如果传递了参数,就会用传递的参数,而不会使用默认值

const func1 = (msg = "你好") => {
console.log(msg);
};
func1();
const func2 = (msg) => {
console.log(msg);
};
func2(); //undefined   没有默认值也没有传参,就会返回undefined

// 定义一个函数,接收一个数组,返回数组长度
const getLength = (arr = []) => console.log(arr.length);
const list = ["a"];
getLength(list); //1  这里传入一个值
getLength(); //0

解构

// 解构只是一种更简洁,方便来获取数据的写法
const arr = [1, 2, 3, 4];
// 获取前两位,老方法
// const str3 = arr[0];
// const str4 = arr[1];
// console.log(str3, str4);

const [str1, str2] = arr;
console.log(str1, str2); //1 2

// 交换变量,解构
let a = 100;
let b = 200;
[b, a] = [a, b];
console.log(a, b); //200 100

// 对象解构
const obj = { name: "哈哈哈", age: 18 };
const { name, age } = obj;
console.log(name, age); //哈哈哈 18

对象简写

const name = "哈哈";
const age = 18;
// const obj = {
//   name: "哈哈",
//   age: 18,
// };

// 如果变量名跟属性名称一致的话,可以简写成一下形式
// const obj = {
//   name, //name:'name'
//   age,
// };
// console.log(obj);

// 方法简写可以将:function省略掉
// const obj = {
//   name,
//   say: function () {
//     console.log("哈哈哈");
//   },
// };
const obj = {
name,
say() {
console.log("这是一个方法,函数");
},
};
obj.say();
// console.log(obj.say);  //ƒ say() {console.log("这是一个方法,函数");}

剩余运算符...

// 剩余运算符 是一种比较方便的获取数据的方式
const arr = [1, 2, 3, 4, 5, 6, 7, 8];
const [letter1, letter2] = arr;
console.log(letter1, letter2);
// 希望获取到剩余所有元素 放在新数组中 newArr是新数组名字(自定义)
const [let1, let2, let3, ...newArr] = arr;
console.log(newArr);

const list = ["a", "b", "c"];
const [str1, str2, str3, ...newList] = list;
console.log(newList); //得到空数组[]

const obj1 = { a: 1, b: 2, c: 3, d: 4 };
const { a } = obj1;
console.log(a); //1
const obj2 = { b: 2, c: 3, d: 4 };
const { b, c, d, ...obj3 } = obj2;
console.log(obj3); //空对象

calc(1); //[1]
calc(1, 2); //[1,2]
calc(1, 2, 3); //[1,2,3]

function calc(...params) {
// params可以获取所有传递给calc的参数 封装到一个数组中
console.log(params);
// 对数组做什么业务都可以 计算总和 计算最大值 最小值
}

值类型和引用类型

// js数据类型 分成了两种 1 值类型  2 引用类型
// 1 值类型 简单数据类型  字符串、数字、布尔类型、
// 2 引用类型   对象 、 数组

// 两者区别 体现  =
// 值类型 使用 = 复制
// 引用类型 使用 =  关联在一起

// let a =1 ;
// let b = a;
// // b a 的一份复制 两个值 一样 但是两个数据是完全独立!
// b=10;
// // a 不会发生变化
// console.log(a);

const obj = { username: "悟空" };
// 也使用 =
const newObj = obj; // newObj 看起来和 obj 数据一样   两个数据 本身一起!  修改了其中的任意一个,另外一个也会收到影响
newObj.username = "八戒";
console.log(obj); //{username: '八戒'}

复制引用类型-剩余运算符

// 复制一份对象,修改新的数据之后,旧的数据不会受到影响
const obj = { name: "哈哈", height: 170 };

const newObj = obj;
// const newObj = { ...obj };  //复制一份
// console.log(obj);//{name: '哈哈', height: 170}
// console.log(newObj);//{name: '哈哈', height: 170}

newObj.name = "悟空";
// console.log(newObj);
console.log(obj); //{name: '悟空', height: 170}  旧的数据被更改了

const list = ["a", "b"];
const newList = [...list]; //将旧的复制一份并放入新数组newList
newList.push("c");
console.log(list); //["a", "b"]
console.log(newList); //["a", "b","c"]

数组

map方法

// 处理原数组,返回新数组
// map 返回 处理后的数组
// map 数组的一个方法 也会遍历数组 接收一个函数
// value 值  index 索引
const arr = ["a", "b", "c"];
const newArr = arr.map(function (value, index) {
return `<li>${index}-${value}</li>`;
});
console.log(newArr); //['<li>0-a</li>', '<li>1-b</li>', '<li>2-c</li>']

map方法跟箭头函数结合

const arr = ["a", "b", "c"];
const newArr = arr.map((value) => `<li>${value}</li>`);
console.log(newArr); //['<li>a</li>', '<li>b</li>', '<li>c</li>']

filter方法

// filter 过滤 返回 过滤后的数组
const arr = [1, 6, 3, 5, 8, 45, 21, 12];
// 返回大于40的数据,重新组成数组
const newArr = arr.filter(function (value) {
if (value >= 40) {
return true;
} else {
return false;
}
});

console.log(newArr);

// 结合箭头函数
const newArr2 = arr.filter((value) => value > 40);
console.log(newArr2);

const newArr3 = arr.filter((value) => {
return value >= 20;
});
console.log(newArr3);

every方法

// every 检测数值元素的每个元素是否都符合条件,全部都符合就会返回true,否则返回false
const arr = [1, 5, 2, 12, 15, 42, 32, 30, 22];
const result = arr.every(function (value) {
if (value > 20) {
return true;
} else {
return false;
}
});
console.log(result); //false

// 简写
const result2 = arr.every((v) => v < 50); //true 全部数值小于50
console.log(result2); //true

// every 对于空数组,也会直接返回true

some方法

// some检测数组中是否有元素符合指定条件,只要有一个符合条件都返回true
// 检测到符合就返回了,后续不会再检测下去了
const arr = ["聪明", "聪明", "聪明", "聪明", "憨憨", "聪明", "聪明"];
const result = arr.some((value) => value === "憨憨");
if (result) {
console.log("快乐");
} else {
console.log("nice");
}

注意点:some跟every的区别

every是全部符合才返回true

some是只要有一个符合就返回true

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.箭头函数 箭头函数的传参: 如果只传递一个参数,小括号可以省略 如果没有参数或者参数大于1个,小括号不能省略 ...
    这个名字很有品味阅读 1,517评论 0 1
  • js高级第一天 箭头函数 概念 语法 传递参数 只有一个参数 小括号可以省略const fn3 = a =>{ ...
    Web_小pang阅读 1,463评论 1 2
  • 面向对象 面向过程面向对象优点性能比面向对象高,适合跟硬件联系很紧密的东西,例如单片机就采用的面向过程编程。易维护...
    Grandperhaps阅读 1,328评论 0 0
  • 之前只有函数中存在局部作用域。 一、声明变量与常量 1.let关键字 ①let关键字用来声明变量。②if、for的...
    大刀劈向鬼子阅读 1,549评论 0 0
  • 1.编程思想 2.对象与类 3.面向对象版tab 栏切换 4.构造函数和原型 5.继承 6.ES5新增方法 7.函...
    Scincyc阅读 3,576评论 0 0

友情链接更多精彩内容