欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

流程控制和函数和返回值

程序员文章站 2022-05-20 15:23:40
...

流程控制

1. 顺序(默认)

2. 分支

  • 有条件的执行某个代码块
  1. 单分支:进当表达式计算结果为真时,才执行代码块 if(条件表达式){}
  1. let age = 28;
  2. if (age >= 18) {
  3. console.log("你好");
  4. }
  5. // `if (age >= 18) ` 此为判断条件 当 age>=18 时 才向下执行{}里面的 `console.log("你好");`.否则不执行
  1. 双分支: 有一个默认分支
  1. let age = 8;
  2. if (age >= 18) {
  3. console.log("你好");
  4. } else {
  5. console.log("现在不好");
  6. }
  7. // 当 `age>=18;` 执行 "你好", 否则 执行 "现在不好"
  8. ///简化代码
  9. let age = 8;
  10. let res = age >= 18 ? "你好" : "现在不好";
  11. console.log(res);
  1. 多分支: 有多个默认分支
  1. let age = 48;
  2. if (age >= 1 && age < 30) {
  3. console.log("我再1-30之间");
  4. } else if (age >= 30 && age < 50) {
  5. console.log("我再30-50之间");
  6. } else if (age >= 50 && age < 100) {
  7. console.log("我再50-100之间");
  8. } else {
  9. console.log("我不在100以内");
  10. }
  11. /// && 为并且 || 或
  1. switch 进行优化
  1. let age = 118;
  2. switch (true) {
  3. case age >= 1 && age < 30:
  4. console.log("我再1-30之间");
  5. break;
  6. case age >= 30 && age < 50:
  7. console.log("我再30-50之间");
  8. break;
  9. case age >= 50 && age < 100:
  10. console.log("我再50-100之间");
  11. break;
  12. default:
  13. console.log("我不在100以内");
  14. }

3. 循环

1. while 入口行判断

  1. const colors = ["red", "green", "blue"];
  2. console.log(colors[0], colors[1], colors[2]);
  3. // 查看数组里有几个值
  4. console.log(colors.length);
  5. //查看数组里面最后一个值的索引号
  6. console.log(colors.length - 1);
  7. // 起始索引
  8. let i = 0;
  9. // 循环条件
  10. let length = colors.length;
  11. // 设变量 length 等于 数组里面有几个数值
  12. // 更新索引 要在代码块里面
  13. while (i < length) {
  14. console.log(colors[i]);
  15. i++;
  16. }
  • 循环三条件
  1. 初始条件: 数组索引的引用 (i = 0)
  2. 循环条件: 为真才执行循环体 ( i < arr.length)
  3. 更新条件: 必须要有,否则进入死循环 ( i++)

2. do{} while() 出口型判断,无论条件是否成立,必须执行一次代码

  1. // 出口型判断,无论条件是否成立,必须执行一次代码
  2. i = 0;
  3. do {
  4. console.log(colors[i]);
  5. i++;
  6. } while (i < length);
  7. // 正常输出 red , green , blue
  8. // 如果把条件改为不成立 `(i > length)` 他也会输出 `red ` 因为不管成不成立 都会输出一次

for()循环 (是 while 的简化)

  • for (初始化条件; 循环条件; 更新条件) {…}
  1. for (i = 0; i < length; i++) {
  2. console.log(colors[i]);
  3. }
  4. // 优化, 将数组长度,提前计算出来缓存到一个变量中(有助有提高速度)
  5. for (let i = 0, length = colors.length; i < length; i++) {
  6. console.log(colors[i]);
  7. }

3.for - of 快速迭代处理集合

  • 数组内部有一个迭代器的方法,可以用for - of
  • for - of 优点 : 用户不必再起关心索引,而将注意力集中在数组成员上
  1. for (let f of colors.entries()) {
  2. console.log(f);
  3. }
  4. // colors.entries() 返回的是数组每个成员的键值对
  5. // colors.keys(); 返回的是数组每个成员的键值(0 ,1, 2)
  6. // colors.values() 返回的是数组每个成员的值(red, green,blue)
  7. // 优化(默认返回值)
  8. for (let f of colors) {
  9. console.log(f);
  10. }
  11. // 返回的是数组每个成员的值(red, green,blue)

4.for - in 遍历对象

  1. const obj = { a: "red", b: "green", c: "blue" };
  2. for (let key in obj) {
  3. console.log(obj[key]);
  4. }

函数和返回值

返回值

  • 函数默认单值返回

  • 如何返回多个值;

    1. 用数组返回
  1. w = () => [1, 2, 3, 4];
  2. console.log(w());
  1. 对象: 模块
  1. w = () => ({ a: 1, b: 2, c: 3 });
  2. console.log(w());
  3. // 对象的简化
  4. let name = "ianren";
  5. let user = {
  6. // name: "woshiwo",
  7. // name: name,
  8. name,
  9. };
  10. console.log(user.name);
  11. // 变量名(name)与属性名(name)同名时;且在同一作用域可以直接写一个name
  12. // 2. 方法简化
  13. user = {
  14. name,
  15. // 所谓方法本质仍是属性 他的值是一个函数声明
  16. getName() {
  17. return this.name;
  18. },
  19. getName1: () => this.name,
  20. };
  21. // 箭头函数不要用到字面量中(有this的不能用箭头函数)
  22. console.log(user.getName());
  23. console.log(user.getName1());

模板字面量 与模板函数

-模板字面量(加反引号)

  1. console.log("hello");
  2. console.log(`hello`);
  • 模板字面量 里面可以使用插值(解析变量)
  1. let name1 = "ianren";
  2. console.log("hello " + name1);
  3. // 使用插值
  4. console.log(`hello ${name}`);
  5. // 变量/表达式等插值,使用${...}插入到模板字面量中
  6. // 表达式
  7. console.log(`10 + 20 = ${10 + 20}`);
  8. // 判断
  9. console.log(`${10 < 20 ? "大于" : "小于"}`);
  10. // 模板函数:使用模板字面量为参数的函数
  11. // 1.模板函数(第一个参数是字面量做成的数组,第二个参数起,是字面量中的插值列表)
  12. function total(strings, num, price) {
  13. console.log(num, price);
  14. }
  15. let num = 10;
  16. let price = 20;
  17. total`${10} * ${500}`;
  18. // 模板函数的优化 以后只用这一种
  19. // 使用 ...rest 将插值合并
  20. function sum(strings, ...arr) {
  21. console.log(strings);
  22. console.log(arr);
  23. console.log(`${arr.reduce((a, c) => a + c)}`);
  24. }
  25. sum`计算多个数 和:${1}${2}${3}${4}${5}`;