• javascript 流程控制及函数


    回顾

    基本语法

    在html的使用

    <script></script>

    注释

    //
    /* */

    指令结束符

    ;
    换行

    输出

    console.log()
    document.write()
    alert()

    变量

    var 变量名 = 值;
    var 变量名;   //默认值undefind
    var v1=100,v2=200,v3=400; //同时声明多个变量

    变量名的命名规范
    由数字、字母、下划线和$ 组成,不能以数字开头
    严格区分大小写。 建议使用小驼峰命名法
    变量名不能使关键字和保留字    

    JS程序

    • 获取页面中元素对象 getElementById()

    • 对元素对象进行操作 属性

    • 事件 onclick

    • 函数

    数据类型

    原始类型 Number String Boolean Null Undefined

    对象类型 Object Array ...

    Number 数字

    NaN isNaN(参数)

    String

    • 声明方式 : 单引号 双引号 反引号(ES6) ${}

    Boolean

    • true false

    Null和Undefined

    • 函数的默认返回值是null

    • 没有赋值的变量是undefined

    数据类型转换

    • 自动转换: 取决于运算符

    • 强制转换: Number() String() Boolean()

    弱类型 和 强类型 动态类型和静态类型 (了解)

    • 动态类型: 不需要提前为变量指定 数据类型

    • 静态类型: 需要为变量提前指定 数据类型

    • 强类型: 数据类型不能自动转换

    • 弱类型: 数据库可以自动转换

    JavaScript:  弱类型   动态类型
    Python:     强类型   动态类型

    运算符

    分类

    • 按操作数的个数: 一元运算符(++/ -- 正号和负号) 二元运算符(+-/*) 三元运算符(?:)

    • 按功能

    算术运算符

    +  - * / %  ++  --

    比较运算符

    ==
    === 建议
    !=
    !==
    > >= < <=

    逻辑运算符

    &&
    ||
    !

    位运算符

    赋值运算符

    =
    +=
    -=
    *=
    /=
    %=

    其他运算符

    ?: 
    typeof
    + 字符串连接符
    in
    instanceof
    void

    优先级

    课堂笔记

    1 流程控制

    1.1 条件语句 分支结构

    单向分支

    if (条件表达式) {
    code...
    }

    双向分支

    if (条件表达式){
       
    } else {
       
    }
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>grade</title>
     6     <style>
     7         #item {
     8             border:2px solid #ff6700;
     9             width:300px;
    10             height:30px;
    11             font-size: 16px;
    12             /*padding:10px;*/
    13         }
    14         #item1 {
    15             width:300px;
    16             height:200px;
    17             border:2px solid #ff6700;
    18             margin-top:20px;
    19         }
    20 
    21 
    22     </style>
    23 
    24 </head>
    25 <body>
    26     <h1>请输入您的成绩</h1>
    27     <input type="number" id = "item">
    28     <button onclick="outer()">submit</button>
    29 
    30     <div id = "item1"></div>
    31 
    32     <script>
    33         function outer(){
    34             var obj1 = Number(document.getElementById("item").value);
    35             if (obj1>60) {
    36                 var res = "你怎么这么菜,还不去学习"
    37             }else {
    38                 var res = "你比上一个还菜,还不快点去学习"
    39             }
    40 
    41             
    42             document.getElementById("item1").innerHTML = res
    43         }
    44 
    45         
    46     </script>
    47 
    48 
    49     
    50 </body>
    51 </html>
    双向分支

    多向分支

    if (条件表达式) {
       
    } else if(条件表达式) {
       
    } else if (条件表达式) {
       
    } else {
       
    }
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>同志交友</title>
     6     <style>
     7         input {
     8             width: 300px;
     9             padding: 10px;
    10             font-size: 16px;
    11             border: 1px solid #ccc;
    12         }
    13         button {
    14             padding: 10px 20px;
    15             border: 1px solid #ccc;
    16             background: #f5f5f5;
    17         }
    18         #res {
    19             margin-top:20px;
    20             width: 300px;
    21             min-height: 100px;
    22             padding: 10px;
    23             border:1px solid #ccc;
    24         }
    25 
    26     </style>
    27 </head>
    28 <body>
    29     <h1>同志交友</h1>
    30     <hr>
    31     <h3>请输入您的成绩:</h3>
    32     <input type="number" id="score">
    33     <button onclick="makeScore()">提交</button>
    34 
    35 
    36     <div id="res"></div>
    37 
    38 
    39     <script>
    40         //声明函数
    41         function makeScore() {
    42             //获取用户输入的成绩
    43             var score = Number(document.getElementById('score').value);
    44 
    45             //对成绩进行判断
    46             var resContent = '';  //空字符串 声明定义 变量
    47             if (score >= 90) {
    48                 resContent = '不错哦,小同志,很优秀'; //修改变量的值
    49             } else if (score >= 80) {
    50                 resContent = '小同志,还行';
    51             } else if (score >= 60) {
    52                 resContent = '小同志,及格了';
    53             } else {
    54                 resContent = '你不是我的同志';
    55             }
    56 
    57 
    58             //把结果写入到div中 id=res
    59             document.getElementById('res').innerHTML = resContent;
    60 
    61         }
    62 
    63     </script>
    64 </body>
    65 </html>
    多向分支1
     
    switch (条件表达式) {
           case 表达式可能的结果:code... break;
           case 表达式可能的结果:code... break;
           case 表达式可能的结果:code... break;
           case 表达式可能的结果:code... break;
           default code...
    }
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>同志交友</title>
     6     <style>
     7         input {
     8             width: 300px;
     9             padding: 10px;
    10             font-size: 16px;
    11             border: 1px solid #ccc;
    12         }
    13         button {
    14             padding: 10px 20px;
    15             border: 1px solid #ccc;
    16             background: #f5f5f5;
    17         }
    18         #res {
    19             margin-top:20px;
    20             width: 300px;
    21             min-height: 100px;
    22             padding: 10px;
    23             border:1px solid #ccc;
    24         }
    25 
    26     </style>
    27 </head>
    28 <body>
    29     <h1>同志交友</h1>
    30     <hr>
    31     <h3>请输入您的生日:</h3>
    32     <input type="date" id="yearInput">
    33     <button onclick="makeFn()">提交</button>
    34 
    35 
    36     <div id="res"></div>
    37 
    38 
    39     <script>
    40         //声明函数
    41         function makeFn() {
    42             //获取用户输入的日期
    43             var date = document.getElementById('yearInput').value;
    44             
    45             //从日期中获取年 并且转换为Number
    46             var year = Number(date.split('-')[0]);
    47 
    48 
    49             //判断
    50             var animal = '';
    51             switch (year % 12) {
    52                 case 0: animal = ''; break;
    53                 case 1: animal = ''; break;
    54                 case 2: animal = ''; break;
    55                 case 3: animal = ''; break;
    56                 case 4: animal = ''; break;
    57                 case 5: animal = ''; break;
    58                 case 6: animal = ''; break;
    59                 case 7: animal = ''; break;
    60                 case 8: animal = ''; break;
    61                 case 9: animal = ''; break;
    62                 case 10: animal = ''; break;
    63                 case 11: animal = ''; break;
    64                 default: animal = '';  //前面的条件都不满足
    65             }
    66 
    67 
    68             //把结果显示到页面中
    69             document.getElementById('res').innerHTML = '您的生肖是: '+animal;
    70 
    71             /*
    72                year % 12 --  0 ~ 11
    73                 鼠   4     2008  奥运会   + 12  (2020)
    74                 牛   5     2009
    75                 虎   6     2010
    76                 兔   7
    77                 龙   8
    78                 蛇   9
    79                 马   10
    80                 羊   11
    81                 猴   0
    82                 鸡   1
    83                 狗   2
    84                 猪   3
    85             */
    86 
    87         }
    88 
    89         //console.log(2020 % 12)
    90 
    91     </script>
    92 </body>
    93 </html>
    多向分支2
     

    嵌套分支

    if (条件表达式) {
       if (条件表达式) {
       
      } else {

      }  
    } else {
       if (条件表达式) {
           
      }
    }

    1.2 循环语句

    while循环

    while (循环条件) {
       //循环体
    }

    do...while 循环

    do {
       //循环体
    } while (循环条件)

    for 循环

    注意for括号后的值用分号隔开

    for (变量定义;循环条件; 变量变化) {
       //循环体
    }
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>js cycle</title>
     6 </head>
     7 <body>
     8     <script>
     9         var i = 0;
    10         while(i<11){
    11             
    12             console.log(i);
    13             i++;
    14         }
    15         var m = 0;
    16         do{
    17             
    18             console.log(m)
    19             m++;
    20         }while(m<11);
    21 
    22         for (var n = 0;n<11;n++){
    23             console.log(n);
    24 
    25         }
    26     </script>
    27 </body>
    28 </html>
    三种循环

    for循环奇偶筛选

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>for循环</title>
     6 </head>
     7 <body>
     8     <h1>同志交友</h1>
     9     <hr>
    10 
    11     <script>
    12         // 输出 0 到 10之间的偶数
    13         for (var a = 0; a < 11; a ++) {
    14             if (a % 2 === 0) {
    15                 console.log(a)
    16             }
    17         }
    18 
    19         console.log('');
    20         // 输出 0 到 10之间的偶数
    21         for (var i = 0; i < 11; i += 2) {
    22             console.log(i)
    23         }
    24 
    25         // 输出0-10之间的奇数
    26         for (var m = 1;m<11;m+=2){
    27             console.log(m)
    28         }
    29 
    30         console.log('');
    31         console.log(i);
    32         console.log(a)
    33         console.log(m);
    34     </script>
    35 </body>
    36 </html>
    for循环奇偶筛选

    1.3 其他语句

    跳转语句

    continue;   跳出当前循环  继续下一次
    break;     结束循环
    return;     结束函数

    异常

    try {
       
    } catch(err) {
       
    }


    try {
       
    } catch(err) {
       
    } finally {
       
    }

    catch相当于python的except

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>异常语句</title>
     6 </head>
     7 <body>
     8     <script>
     9         try {
    10             console.log(username)
    11         } catch(好多好) {
    12             //括号里可自定义异常
    13             console.log("error123uehufhf") 
    14         } finally {
    15             console.log("you should not do that")
    16             //无论怎么都执行
    17         }
    18     </script>
    19 </body>
    20 </html>
    异常捕捉

    严格模式

    //写在所有代码的最前面
    //开启严格模式
    //一般不用在代码前加上,自己写的代码要严格遵守规定,该缩进就缩进。
    ‘use strict’
    • 严格模式下 声明不加 var 会报错

    • eval() 在严格模式不能用

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>严格模式</title>
     6 </head>
     7 <body>
     8     <script>
     9         //js存在严格格式
    10         //开启严格模式
    11         'use strict'
    12         
    13         var username = '小丽丽';
    14         //userage = 100; //严格模式下 声明变量必须加 var
    15 
    16         console.log(username)
    17     </script>
    18 </body>
    19 </html>
    严格模式

    1.4 注意

    • 当分支语句和循环语句 结构体({}内) 只有一行代码的时候,可以省略{}

    if (条件) 
    代码

     如果有代码和唯一的一行代码缩进相同,第二行及以后的代码不受该条件限制。

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>语句简写</title>
     6 </head>
     7 <body>
     8     <script>
     9         
    10         var score = 10;
    11 
    12         if (score > 100) 
    13             console.log('OK')
    14         
    15         console.log('哈哈哈')
    16         console.log('直接来这里')
    17     </script>
    18 </body>
    19 </html>
    函数体内只有一行代码

    2 函数

    2.1 定义函数

    //function 关键字方式
    function 函数名(参数1, 参数2) {
       code...
    }

    //表达式方式
    var  函数名 = function(参数1, 参数2) {
       code...
    }

    2.2 函数特点

    • 函数名就是变量名

    • 函数调用 必须加 ()

    • 关键字方式定义的函数, 会存在函数提升 (在函数定义的前面 调用函数)function demo(){  }

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>JS如何定义函数</title>
     6 </head>
     7 <body>
     8     <script>
     9         //定义函数  多种方式
    10 
    11         demo(); //函数提升 (特殊情况) dem0
    12         //fn(); //不存在变量提升
    13 
    14 
    15         //function 关键字方式 def
    16         function demo (a, b) {
    17             console.log('demo');   
    18         }
    19 
    20         //表达式方式 
    21         var fn = function(a, b){
    22             console.log('fn');     
    23         }
    24 
    25         console.log('')  //空格
    26         demo();             //demo
    27         fn();             //fn
    28 
    29         var a = demo;
    30 
    31         a();
    32 
    33         console.log(typeof demo) //函数也是一种数据类型(对象类型)
    34         console.log(typeof fn)
    35         console.log(typeof fn())  //underfined
    36 
    37         // console.log('')
    38 
    39         //第三种函数 定义方式 (了解)
    40         var myFun = new Function('a', 'b', 'c', 'console.log("myFun")');
    41 
    42         myFun();
    43 
    44 
    45 
    46 
    47 
    48 
    49     </script>
    50 </body>
    51 </html>
    js 函数定义的三种方式

    2.3 函数的参数问题

    形参和实参

    • 实参数量>形参数量 多给的实参会被忽略

    • 实参数量<形参梳理 多出的形参,默认值undefined

    参数默认值

    //ES6 新增的语法
    function demo(a, b=默认值) {
       
    }
    //有默认值的参数 一定在后面

    可变数量的参数

    arguments对象 可以获取所有的实参
    只能在函数中使用
    arguments是类数组对象,用法同数组,可以使用for循环遍历
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>函数的参数</title>
     6 </head>
     7 <body>
     8     <h1>同志交友</h1>
     9     <hr>
    10 
    11     <script>
    12         
    13         //形参和实参数量
    14         //定义函数
    15         function demo(a, b) {
    16             /*
    17             ES6之间 默认值的写法  了解
    18             if (b === undefined) {
    19                 b = '默认值'
    20             }*/
    21             console.log(a+''+b+' 正在一起交友');
    22         }
    23 
    24 
    25         demo('小丽丽', '小刚刚');
    26         demo('大丽丽', '大刚刚', '大花花'); //多给的实参 会被忽略
    27         demo('老丽丽');    //如果少给了实参。 有个形参没有对应的实参,该形参默认值 undefined
    28         demo();
    29 
    30         console.log('')
    31 
    32 
    33         //参数默认值
    34         function fn(a, b='小梅梅') {
    35             console.log(`${a} 和 ${b} 一起跳舞`);
    36         }
    37 
    38         fn('小刚刚');
    39         fn('小刚刚', '小丽丽');
    40 
    41         console.log('');
    42 
    43 
    44 
    45         //可变数量的参数
    46         //声明函数 实现 所有参数累加的和
    47         function sum() {
    48             //arugments 只能在函数里面用
    49             var s = 0;
    50             
    51             //遍历 arguments 取出其中的每一个值
    52             for (var i = 0; i < arguments.length; i ++) {
    53                 s += arguments[i]
    54             }
    55 
    56             //返回
    57             return s;
    58 
    59         }
    60 
    61         console.log(sum(1,2,3,4))
    62         console.log(sum(1,2,3,4,123,123,1231231,123123123123))
    63 
    64 
    65 
    66 
    67 
    68 
    69     </script>
    70 </body>
    71 </html>
    函数的参数

    2.4 return

    • return 可以结束函数

    • return返回值

    • js return 只能返回一个值

    2.5 回调函数

    • 函数的参数 还是 函数

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>JS函数</title>
     6 </head>
     7 <body>
     8     <script>
     9         //回调函数 (高阶函数)
    10         function fn(f1, f2) {
    11             return f1(1)+f2(1)
    12         }
    13 
    14         function demo(n) {
    15             return n * 100;
    16         }
    17 
    18         console.log(fn(Math.abs, demo))
    19 
    20         console.log('');
    21 
    22         //有名函数 从小到大
    23         function mySort(v1,v2) {
    24             if (v1 > v2) {
    25                 return 5 //换过来 只要是正数 就会交换
    26             } else {
    27                 return -7 //不变  只要是负数 就不换
    28             }
    29 
    30             return v1 - v2;
    31         }
    32 
    33 
    34         //有些方法的参数 要求就是函数
    35         var list = [10,23,1,456,8,3,5]; //数组 Array
    36         console.log(list);
    37         //排序 字符串排序
    38         //list.sort();
    39         //按照自然排序
    40         //list.sort(mySort)
    41         list.sort(function(v1, v2){
    42             return v1 - v2;
    43         })
    44 
    45         console.log(list);
    46 
    47 
    48     </script>
    49 </body>
    50 </html>
    回调函数

    2.6 自调函数

    (function(){
       
    })();

    (function 函数名(){
       
    })()

    //如果多个自调函数连续写, 中间必须加 ; 否则报错
    //产生局部作用域
    //有效避免全局变量污染
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>自调函数</title>
     6 </head>
     7 <body>
     8 
     9     <script>
    10     
    11         (function demo() {
    12             console.log('啊,我被调用了');
    13         })();
    14 
    15 
    16 
    17         (function(){
    18             console.log('啊,我也被调用了')
    19         })()
    20 
    21 
    22 
    23 
    24     </script>
    25     
    26 </body>
    27 </html>
    自调函数

    (function() {

    //所有的代码都写在这里
    //函数 局部作用域 写在这里的变量 都是局部变量
    //全局变量容易造成全局变量污染


    })()

    如果你和同事在同一个html文件导入不同的js藜麦你有相同的变量名,会造成全局变量污染,所以都写成局部变量。

    2.7 递归

    总结

    • 流程控制 分支: 单向分支 双向分支 多向分支(else if switch..case) 嵌套分支

    • 流程控制 循环: while循环 do...while循环 for循环

    • 其他控制语句: 跳转、异常、严格模式

    • 函数 (定义、特点、参数 、自调、回调、递归)

  • 相关阅读:
    Java开发必备工具 ------------工欲善其事,必先利其器(补充+1)
    我的第一篇博客
    GPD mircoPC linux系统安装
    如何简单的编译v8动态库
    如何让FasterTransformer支持动态batch和动态sequence length
    合并多个tensorflow模型的办法
    IDEA优化配置
    Easyui中select下拉框(多选)的取值和赋值
    Windows下搭建Nacos及Seata
    SpringBoot打包成jar运行脚本
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/9451075.html
Copyright © 2020-2023  润新知