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

流程控制,模板函数

程序员文章站 2022-03-01 18:37:15
...

流程控制的分支,循环

1.分支
1.1单分支 if

  1. let age = 28;
  2. if (age >= 18) {
  3. console.log("允许观看");
  4. }

1.2双分支if-else 简化 condition?true:false

  1. age = 18;
  2. if (age >= 18) {
  3. console.log("允许观看");
  4. } else {
  5. console.log("少儿不宜");
  6. }
  7. age = 35;
  8. let res = age >= 18 ? "允许观看" : "少儿不宜";
  9. console.log(res);

1.3多分支if-elseif-else/switch

  1. age = 60;
  2. if (age >= 18 && age < 35) {
  3. console.log("允许单独观看");
  4. } else if (age >= 35 && age < 60) {
  5. console.log("允许二人观看");
  6. } else if (age >= 60 && age < 120) {
  7. console.log("建议在家人陪同下观看");
  8. } else if (age <= 3 || age >= 120) {
  9. console.log("非法年龄");
  10. } else {
  11. console.log("少儿不宜");
  12. }
  13. //!switch
  14. //区间判断,使用true
  15. age = 10;
  16. switch (true) {
  17. case age >= 18 && age < 35:
  18. console.log("允许单独观看");
  19. break;
  20. case age >= 35 && age < 60:
  21. console.log("允许二人观看");
  22. break;
  23. case age >= 60 && age < 120:
  24. console.log("建议在家人陪同下观看");
  25. break;
  26. case age <= 3 || age >= 120:
  27. console.log("非法年龄");
  28. break;
  29. default:
  30. console.log("少儿不宜");
  31. }
  32. //单值判断:变量
  33. let lang = "html";
  34. lang = "css";
  35. lang = "javascript";
  36. lang = "js";
  37. lang = "HTML";
  38. switch (lang.toLowerCase()) {
  39. case "html":
  40. console.log("超文本编辑语言");
  41. break;
  42. case "css":
  43. console.log("层叠样式表");
  44. break;
  45. case "javascript":
  46. case "js":
  47. console.log("通用前端脚本编程语言");
  48. break;
  49. default:
  50. console.log("不能识别");
  51. }

循环

1.while/do while

  1. //!while循环
  2. i = 0;
  3. while (i < length) {
  4. console.log(colors[i]);
  5. i++;
  6. }
  7. //!循环三条件
  8. //*1.初始条件:数组索引的引用(i=0)
  9. //*2.循环条件:为真才执行的循环体(i<arr.length)
  10. //*3.更新条件:必须要有,否则进入死循环(i++)
  11. //*do{}while(),出口型判断,无论条件是否成立,必须执行一次代码块
  12. i = 0;
  13. do {
  14. console.log(colors[i]);
  15. i++;
  16. } while (i < length);

2.for

  1. //for(初始条件;循环条件;更新条件){}
  2. for (i = 0, leng = colors.length; i < length; i++) {
  3. console.log(colors[i]);
  4. }
  5. //for-of;快速迭代处理集合数据
  6. //用户不必再关心索引,而将注意力集中在数组成员上
  7. for (let item of colors.entries()) {
  8. console.log(item);
  9. }
  10. for (let item of colors.keys()) {
  11. console.log(item);
  12. }
  13. for (let item of colors.values()) {
  14. console.log(item);
  15. }
  16. for (let item of colors) {
  17. console.log(item);
  18. }
  19. //!for-in 对象遍历
  20. const obj = { a: 1, b: 2, c: 3, say: function () {} };
  21. for (let key in obj) {
  22. console.log(obj[key]);
  23. }

参数与返回值

1.参数
1.1参数不足:默认参数

  1. f = (a, b = 0) => a + b;
  2. console.log(f(1));

1.2参数过多:…rest

  1. f = (...arr) => arr;
  2. console.log(f(1, 2, 3, 4, 5));
  3. console.log(...[1, 2, 3, 4, 5]);

2.返回值
2.1默认单值
2.2多值
2.2.1数组

  1. f = () => [1, 2, 3];
  2. console.log(f());

2.2.2对象

  1. f = () => ({ a: 0, b: 1, c: 2, get: function () {} });
  2. console.log(f());

字面量简化方案

1.属性简化
变量name与属性name同名
且在同一个作用域中,可以不写变量名

  1. let name = "朱老师";
  2. //!属性简化
  3. let user = {
  4. // name:"朱老师",
  5. // name:name,
  6. name,
  7. };
  8. console.log(user.name);

2.方法简化
所谓方法:本质仍是属性,只不过它的值是一个函数声明,将”:function”删除

  1. /*user = {
  2. name,
  3. getName: function(){
  4. return this.name;
  5. },
  6. };*/
  7. user = {
  8. name,
  9. getName() {
  10. return this.name;
  11. },
  12. };
  13. // console.log(user.getName());
  14. console.log(user.getName());

模板字面量

  1. //传统
  2. console.log("hello world");
  3. //模板字面量:反引号定义
  4. console.log(`hello world`);
  5. //模板字面量中,可以使用“插值”(变量,表达式),可以解析变量
  6. let name = "朱老师";
  7. console.log("hello" + name);
  8. //变量/表达式等插值,使用${...}插入到模板字面量中
  9. console.log(`hello ${name}`);
  10. console.log(`10+20= ${10 + 20}`);

模板函数

1.使用“模板字面量”为参数
2.第一个参数必须是模板字面量中的“字面量”组成的数组
3.第二个参数起是“模板字面量”的插值列表,通常使用“…rest”来归并到一个数组中处理