流程控制之分支

单分支

  1. if(true){
  2. console.log("对");
  3. }

双分支

  1. if(true){
  2. console.log("对");
  3. }else{
  4. console.log("错");
  5. }

多分支

  1. let age = 121;
  2. if (age >= 18 && age < 50) {
  3. console.log("成年人");
  4. } else if (age >= 50 && age < 70) {
  5. console.log("中老年");
  6. } else if (age >= 70 && age <= 100) {
  7. console.log("老年人");
  8. } else if (age < 1 || age > 100) {
  9. console.log("非法传参");
  10. } else {
  11. console.log("未成年");
  12. }

多分支有个语法糖可以代替,switch

  1. //区间判断条件用true
  2. switch (true) {
  3. case age >= 18 && age < 50:
  4. console.log("成年人");
  5. break;
  6. case age >= 50 && age < 70:
  7. console.log("中老年");
  8. break;
  9. case age >= 70 && age <= 100:
  10. console.log("老年人");
  11. break;
  12. case age < 1 || age > 100:
  13. console.log("非法传参");
  14. break;
  15. default:
  16. console.log("未成年");
  17. }
  18. //单值判断用变量
  19. let sex = 1;
  20. switch (sex) {
  21. case 1:
  22. console.log("男");
  23. break;
  24. case 2:
  25. console.log("女")
  26. break;
  27. default:
  28. console.log("保密");
  29. }

流程控制之循环

while循环

  1. const arr = [1, 2, 3, 4, 5, 6];
  2. let lenght = arr.length;
  3. let i = 0;
  4. while (i < lenght) {
  5. console.log(arr[i]);
  6. i++;
  7. }
  • 循环三条件
  1. 初始条件: 数组索引的引用 ( i = 0 )
  2. 循环条件: 为真才执行循环体 ( i < arr.length )
  3. 更新条件: 必须要有,否则进入死循环 ( i++ )

do-while循环

  1. // do{}while() 先执行后判断
  2. i = 0
  3. do {
  4. console.log(arr[i]);
  5. i++;
  6. } while (i < lenght)

for循环

  1. const colors = ["red", "blue", "green"];
  2. for (let i = 0, lenght = colors.length; i < lenght; i++) {
  3. console.log(colors[i]);
  4. }

数组操作中最常用的还有for-of循环

  1. // for-of输出目标键值对或数组
  2. // 输出键值对组成的数组
  3. for (let item of colors.entries()) {
  4. console.log(item);
  5. }
  6. // 输出键的数组
  7. for (let item of colors.keys()) {
  8. console.log(item);
  9. }
  10. // 输出值的数组
  11. for (let item of colors.values()) {
  12. console.log(item);
  13. }

for-in 遍历对象

  1. let obj = { "name": "张三", "sex": "1", "city": "beijing", "callback": function () { } };
  2. for (let item in obj) {
  3. console.log(obj[item]);
  4. }
  5. // 虽然数组也是对象,但是数组一般不用for-in这种形式遍历

函数的参数与返回值

当函数参数不足时,要在函数定义时给参数加默认值

  1. let f1=(a,b=0)=>a+b;
  2. console.log(f1(1));//返回1
  3. console.log(f1(2,3));//返回5

当函数参数过多,则需要把所有参数都接受到一个数组中:
... : rest语法剩余参数,归并参数,将所有参数全部压入到一个数组中

  1. let f = (...arr) => arr;
  2. console.log(f(1, 2, 3));//输出[1,2,3]
  3. // ...[集合数据],可以将它"展开"成一个个独立的元素,用在调用的时候
  4. console.log(...[1, 2, 3, 4]);//输出1,2,3,4
  5. //用模板字符串输出看一下参数的对应情况
  6. f = (a, b, ...arr) => `a=${a}, b=${b}, ...arr=[${arr}]`;
  7. console.log(f(1, 2, 3, 4, 5, 6));//输出a=1,b=2,...arr=[3,4,5,6]
  8. f = (a, b, ...arr) => arr;//只返回数组部分
  9. console.log(f(1, 2, 3, 4, 5, 6));//输出[3,4,5,6]
  10. // 实例1:计算任何数量的数据之和
  11. f = (...arr) => arr.reduce((a, c) => a + c);
  12. console.log(f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));//输出55
  13. // 实例2:服务器返回类型列表,把类型套上html标签,添加到页面中
  14. const json = ["女装", "男装", "童装", "饰品", "鞋包"];
  15. let f = (...item) => item.map(item => `<li>${item}</li>`).join("");
  16. console.log(f(...json));
  17. //输出:<li>女装</li><li>男装</li><li>童装</li><li>饰品</li><li>鞋包</li>
  18. // document.body.innerHTML = "<ul>" + f(...json) + "</ul>";

函数返回单值

  1. let f=(a,b)=>a+b;
  2. console.log(f(1,2));//返回3

函数返回多值时有两种方式:1. 返回数组,2. 返回对象(模块)

  1. 返回数组

    1. f = () => [1, "a", 2];
    2. console.log(f());//返回:[ 1, 'a', 2 ]
  2. 返回对象

  1. f = () => ({ "a": "1", "b": "2", "c": function () { } });//返回一个对象时,要用`()`把返回值包起来
  2. console.log(f());//返回:{ a: '1', b: '2', c: [λ: c] }

对象字面量的简化——推荐使用

  1. // 变量简化
  2. let name = '张二狗';
  3. let user = {
  4. name,//name:name,对象内的name=全局中的name,由于命名相同可以简写为name
  5. // getName: function () {
  6. // return this.name;
  7. // }
  8. // 方法简化
  9. //对象中的方法可以省略function,以属性名当函数名
  10. getName() {
  11. return this.name;
  12. }
  13. //注意:对象里的方法不可以用箭头函数来简写,因为箭头函数里的this在声明时定义,写在方法中的时候是不会指向当前方法的,所以只能如上面写法;
  14. };
  15. console.log(user.name);//张二狗
  16. console.log(user.getName());//张二狗

模板字面量(模板字符串)与模板函数(标签函数)

模板字面量是用一对反引号括起来的字符串;
模板字面量中可以使用插值解析变量

  1. let name = "小花";
  2. console.log("Hello " + name);
  3. // 变量/表达式等插值,使用 ${...}插入到模板字面量中
  4. console.log(`Hello ${name}`);//输出Hello 小花
  5. console.log(`10 + 20 = ${10 + 20}`);//输出 10 + 20 = 30
  6. console.log(`${10 < 20 ? `大于` : `小于`}`);//输出:小于
  • 模板字面量: 可以使用插值表达式的字符串
  • 模板函数: 可以使用”模板字面量”为参数的函数
  • 模板函数,就是在”模板字面量”之前加一个标签/标识符,而这个标签,就是一个函数名
  • 模板函数的参数是有约定的, 不能乱写, 第一个是字面量数组,从第二起才是内部的占位符参数

模板函数

  1. // * 使用 ...rest 将插值进行合并
  2. function sum(strings, ...args) {
  3. console.log(strings);//输出:['计算多个数之和:','','','','']
  4. console.log(args);//输出:[1,2,3,4]
  5. console.log(`[${args.join()}] 之和是: ${args.reduce((a, c) => a + c)}`);
  6. }
  7. // 调用
  8. sum`计算多个数和: ${1}${2}${3}${4}`;//输出:[1,2,3,4] 之和是: 10

更多相关文章

  1. Android(安卓)异步更新UI----AsyncTask
  2. android opencv 前置摄像头
  3. Android应用程序请求SurfaceFlinger服务渲染Surface的过程分析
  4. Android网易评论盖楼效果实现
  5. 浅谈android hook技术
  6. Android原生代码调用H5 Web网页中的Javascript函数方法
  7. Android属性动画AnimatorSet源码简单分析
  8. Android系统启动过程
  9. 详解MySQL中concat函数的用法(连接字符串)

随机推荐

  1. understanding android build layer · D
  2. Android布局文件中的属性含义
  3. Android Treble 简介
  4. ch013 Android ScrollView与ListView
  5. Android 中国象棋源码
  6. Android横竖屏切换总结(Android资料收藏)
  7. Android 弱引用
  8. Android NDK下载:Download Android 1.5 ND
  9. Android(安卓)悬浮窗 (附圆形菜单悬浮窗)
  10. Android 进度条