一. js逻辑

2023-05-16

1.回顾


js的数据类型
    5种基本的数据类型
       number  数值
       string  字符串
       boolean  布尔
       undefined 未定义
       null  空对象
  一种特殊的数据类型(复合 引用 对象)
             object  对象
       array   数组
       function  函数
  typeof 检测数据类型
     typeof null    object
     typeof undefined   undefined
     typeof  true      boolean
     typeof 123    number
     typeof  "你好"   string
     
  null和undefined有什么区别
    undefined 未定义  声明变量但是没有赋值 没有存储空间  var a;
    null   空对象 有存储空间
    
  == 和===的区别
    ==  在判断的时候  会隐式转换 
  ===  不会隐式转换
​
数据的转换
     显式转换/强制转换  通过js的方法  强制将数据转化为某种数据类型
   隐式转换: 在进行某些运算的时候 自动转换数据类型
 Number()  强制转换为number类型
    string类型(纯数字 ""-0 "   "-0) boolean(true-1  false-0) null-0
 parseInt()
     强制转为number类型  从左往右转换 遇到不能转换的或者是末尾结束 如果从一开始就不能转换则是NaN 取整(舍弃小数)
    parseInt("abc12.6cd");//NaN
  parseInt(null);//NaN
 parseFloat()
        强制转为number类型  从左往右转换 遇到不能转换的或者是末尾结束 如果从一开始就不能转换则是NaN 保留小数
    parseFloat("12.5px");12.5
​
String(undefinded)  转换为string类型   在转换的数据加引号 
        "null"   "undefined"  
toString() 
    null.toString() //  不能转
    undefined.toString()  不能转
  
Boolean
 
number(非0即真)  string类型(有值即真)  null-false undefined-false NaN-false
​
要保留的额数据.toFixed(n)  保留n位小数
​
isNaN   检测数据是不是  不是一个数
//会先隐式转换number类型 再进行判断
isNaN(10)  false
isNaN("嘿嘿")
​
算术表达式
    + - * / % ++ --
赋值表达式
    = += -=   a+=2  a=a+2
三目
    条件?true执行的代码(只能写一行代码):false执行的代码(只能写一行代码)
    true?console.log("今天吃早饭了吗"):console.log("起床起晚了");
  console.log(123)
​  

2.逻辑运算符


或||    与&&    非!  
  • 基础操作


        // 逻辑运算符  ||或  &&与  !非  运算符左侧两侧是跟的条件
        // 1. ||或   只要有一个true 结果就为true
        var a =  true || false;
        console.log(a);//true
​
        var b =  1==1 || 1>2;//  true || false
        console.log(b);//true
        
​
        var c   =    "a"=="A"   ||    "11"===11;//  var c =  false
        console.log(c) //false
​
​
        // 2. &&与   只要都为true的时候  结果才为true
        var a1 = 1>2 && 2>1; //var a1 = false  && true
        console.log(a1);//false
​
        var b2 =  "a"=="a" &&  "b"=="b";// true && true
        console.log(b2);
​
​
                // 3 非 !  取反
​
        var a = 2;
        console.log(!a);  
  • &&短路运算

    • ==如果第一个条件就为false 第二个条件不执行 执行到哪就把哪的值给左侧==

    • ==如果第一个条件就为true 再去执行第二个条件 执行到哪就把哪的值给左侧==


 // 3.1 &&短路运算
        // 如果第一个条件就为false 第二个条件不执行  执行到哪就把哪的值给左侧
        var a1 = 1;
        var b1 = 1;
        var c1 = --a1 && --b1;//var c1= 0          a1=0   b1 = 1
        console.log(a1,b1,c1);// 0 1 0
​
        // 如果第一个条件为true  再去执行第二个条件  执行到哪就把哪的值给左侧
        var x = 10;
        var y = true &&  x--;  // y=10   x=9
        console.log(x,y);// 9 10
​
​
        var a2 = 10;
        var b2 = 2;
        var c2 = --a2 && --b2;//var c2 =  9 && 1           a2=9  b2=1
        console.log(a2,b2,c2);//9 1  1     
  • || 短路运算

    • ==如果第一个条件为true 第二个条件不执行 执行到哪就把哪的值给左侧==

    • ==如果第一个条件为false 再执行第二个条件 执行到哪就把哪的值给左侧==


//3.2 或|| 短路
        // 如果第一个条件为true  第二个条件不执行  执行到哪就把哪的值给左侧
        var x = 10;
        var z = true || x--;// z=true
        console.log(x,z);//10 true
​
        // 如果第一个条件为false  再执行第二个条件  执行到哪就把哪的值给左侧
        var x = 10;
        var z = false || --x;  // var z = 9      x=9
        console.log(x,z);// 9 9    
​
​
        var x1 = 1;
        var y1 = 10;
        var z1 = --x1 || --y1;//var z1 = 0 || 9    z1 = 9      x1=0  y1=9
        console.log(x1,y1,z1);//0 9 9    
        
        
        var x2 = 10;
        var y2 = 10;
        var z2 = --x2 || --y2;//var z2 =  9             x2 = 9  y2 = 10
        console.log(x2,y2,z2);// 9 10 9    

3.流程控制语句

1.流程控制语句介绍

  • 顺序结构(代码依次从上往下执行)

    
    console.log(1)
    console.log(2)
    console.log(3)  
  • 选择结构(分支语句) if if-else if-else if-else switch

  • 循环结构:for while do-while for-in

2.选择结构(分支语句)

2.1 单分支

  • if

    • 语法: if(条件){ 条件成立的时候执行的代码 }

    • ==注意事项==

      • if后面的大括号可以省略 不加大括号 只能控制后面一行代码

      • if的判断条件不一定是表达式 只要能确定真假就行


 <script>
        // 1.单分支  if(判断条件) { 条件成立执行的代码}
        //需求:如果我的钱超过10000 我就挣钱娶媳妇
        var price = 8000;//这是我目前的存款
        if(price > 10000){  // false 条件不成立
            // 条件成立执行的代码
            console.log("挣钱娶媳妇");
            console.log("度蜜月");
        }
        
        // 注意事项1:if后面的大括号可以省略 不加大括号 只能控制后面一行代码
​
        if(true)console.log(123);
        if(false){console.log(456);console.log(789)};
​
        // 注意事项2:if的判断条件不一定是表达式  只要能确定真假就行
        if(0){
            console.log("你在说什么")
        }
    </script>  

2.2 双分支

  • if-else

    • 语法: if(判断条件){条件成立执行的代码 }else{条件不成立执行的代码}

    • ==注意事项:如果是双分支语句 if和else一定要搭配使用==


<script>
        // 2.双分支 if(判断条件){ 条件成立执行的代码} else{ 条件不成立执行的代码}
        // 需求:如果你二阶段考核分数不过90 你就末班  如果超过90 就进入三阶段
​
        var store = 90;
        if(store >= 90){ //条件成立
            console.log("进入三阶段")
        }else{//条件不成立
            console.log("恭喜你要深造了一次")
        }
​
        // 注意事项:如果是双分支语句  if和else一定要搭配使用
        if(true){
            console.log(123)
        }else{
            console.log(456)
        }
    </script>  

2.3 多分支

  • if-else if -else

    • ==注意事项==:else不是必须的

    • 语法:


                     if(条件1){
                满足条件1执行的代码
            }else if(条件2){
                满足条件2执行的代码
            }else if(条件3){
                满足条件3执行的代码
            }
            .........
            else{ 
                以上条件都不满足的时候 执行的代码
            }  

         //需求  成绩0-59 不及格  60-79 中等  80-100优秀    不在0-100中间  成绩无效
        var store = 101;
        if (store > 0 && store <= 59) {  //0-59  大于0 store > 0   && 小于等于59  store <=59
            console.log("不及格")
        } else if (store > 59 && store <= 79) {// 60-79     大于59 store >59  &&  小于等于79 store <=79
            console.log("中等")
        } else if (store > 79 && store <= 100) {//80-100
            console.log("优秀")
        } else { //以上条件都不满足的时候  执行这里的代码
            console.log("成绩无效")
        }
​
        // 注意事项  else不是必须的
        var num = 12;
        if(num==10){
            console.log("10")
        }else if(num==11){
            console.log("11")
        }  

2.4 switch语句

  • 语法

    
    switch(){
                case 情况1 : 匹配到情况1所执行的代码; break;
                case 情况2 : 匹配到情况2所执行的代码; break;
                case 情况3 : 匹配到情况3所执行的代码; break;
                ......
                default:上述情况都不匹配的时候 执行的代码
                
              }  

<script>
        /*
          
        */
        // break 终止的意思  如果满足这一项,直接终止后面的代码执行
        var a = "%";
        switch (a) {
            case "+": console.log("+"); break;
            case "-": console.log("-"); break;
            case "*": console.log("*"); break;
            case "/": console.log("/"); break;
            default: console.log("没有找到")
        }
​
​
        var  c = 90;
        switch(c){
            case 100:console.log("满分");break;
            default:console.log("没有找到");
        }
​
        // switch 比较适用于简单的字符串或者数字判断
​
    </script>  

3.循环结构

3.1 for循环


什么时候需要使用for循环 多次重复执行  多次有规律的执行
for循环的作用  可以让特定的代码执行指定的次数  
  • 语法 ==一定要有结束条件==


for(表达式1;表达式2;表达式3){ 循环体(重复执行的代码) }
for(初始化循环变量;循环条件;更新循环变量值){循环体(重复执行的代码)}
​
for(var n=0;n<5;n++){ console.log("今天吃饭了") }
​
执行过程
    1.初始化循环变量   var n = 0
    2.判断循环条件     n<5  
                     条件成立   执行循环体
           条件不成立  结束循环
    3.更新循环变量  n++  
        4.回到步骤2  
  • 基础用法


 <script>
        /*  
                for(表达式1;表达式2;表达式3){ 循环体 }
                for(初始化循环变量;循环条件;更新循环变量值){  循环体}
        */
        for (var n = 1; n < 10; n++) { // n = 1 2 3 4 5 6 7 8 9 10
            console.log("你今天吃饭了吗")
        }
        console.log(n);//10
    </script>  
  • 循环数组


​
        //循环数组 
        //array 数组类型  ["123",2,true,undefined,null]  数组可以存储多个数组 可以存储任意类型的数据
        var arr = ["你好吗", 123, true, undefined, null];
        console.log(arr);
        //获取数组中的某一项  语法  数组名[下标]
        //    console.log(arr[0])
        //    console.log(arr[1])
        //    console.log(arr[2])
        //    console.log(arr[3])
        //    console.log(arr[4])
​
        //
        for (var i = 0; i < 5; i++) { // i = 0 1 2 3 4 5
            // console.log(i);// 0 1 2 3 4
            console.log(arr[i]);// "你好吗" 123 true undefined null
        }  
  • 循环生成标签


body>
    <button>生成</button>
    <ul>
​
    </ul>
    <script>
        var arr = ["赵四成精", "刘能变形", "中国老年人才网正式上线", "拍婚纱照 新郎被劈死"]
        // 需求  点击生成按钮  生成四个新闻
        // 1.获取元素
        var btn = document.getElementsByTagName("button")[0];
        var list = document.getElementsByTagName("ul")[0];
        // 2.添加点击事件
        btn.onclick = function () {
            for (var i = 0; i < 4; i++) { // i = 0 
                //  将原先的内容获取到  + 新内容
                // arr[0]  arr[1]  arr[2]  arr[3]
                list.innerHTML += "<li>" + arr[i] + "</li>"
                /* 
                    i=0     "<li>赵四成精</li>"
                    i = 1    "<li>赵四成精</li>" +  "<li>刘能变形</li>"
                    i = 2  
                */
            }
        }
    </script>
</body>  
  • 循环添加点击事件


<body>
    <button>按钮1</button>
    <button>按钮2</button>
    <button>按钮3</button>
    <button>按钮4</button>
    <button>按钮5</button>
    <script>
        //点击哪个按钮  将哪个按钮的文本内容输出
        var btn = document.getElementsByTagName("button");
​
        // btn[0].onclick = function(){
        //     console.log(btn[0].innerText)
        // }
​
        // btn[1].onclick  = function(){
        //     console.log(btn[1].innerText)
        // }
​
        // btn[2].onclick  = function(){
        //     console.log(btn[2].innerText)
        // }
​
        // btn[3].onclick  = function(){
        //     console.log(btn[3].innerText)
        // }
​
        // btn[4].onclick  = function(){
        //     console.log(btn[4].innerText)
        // }
​
​
        for(var i = 0;i<5;i++){ // i = 0 1 2 3 4 5 
            btn[i].onclick = function(){
                // console.log(btn[i].innerText);// 出现报错信息  因为此时i的值是5
                // console.log(i);//5
            }
        }
    </script>
</body>  

3.2 while与do-while


 /* 
            while语句
            1.初始化循环变量
            while(条件){
                循环体(重复执行的代码);
                更新循环变量
            }
        */
​
        var a = 0;
        while(a < 3){
            console.log("你好");
            a++;
        }
​
​
        /* do-while语句 
           1.初始化循环变量
           do{
              循环体;
              更新循环变量
           }while(条件)
        */
​
        var b = 0
        do{
            console.log("摆烂");
            b++;
        }while(b<3);
​
​
​  
  • while和do-while的区别


​
        // while和do-while有什么区别
​
        var x = 0;
        while(x > 0){  //先判断后执行 最开始不成立 一次也不执行
            console.log("马上下课了");
            x++;
        }
​
        var x = 0;
        do{// 先执行后判断  最开始不成立  也会执行一次
            console.log("还没有下课呢");
            x++;
        }while(x<0)
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一. js逻辑 的相关文章

随机推荐

  • 2020年最新“MySQL数据库高频面试题解析+Mysql问题分析思维导图”

    前言 xff1a 本文涵盖100道MySQL数据库高频面试题解析 43 Mysql问题分析思维导图 xff1b 没有那么多废话 xff0c 文章有点干 xff0c 除了干货就是干货 满是诚意 xff0c 建议收藏 MySQL 100道高频面
  • CentOS7 安装Nextcloud17

    CentOS7 安装Nextcloud17 nextcloud是继承owncloud后的开源项目 xff0c 并且跨各大平台 xff0c 提供安卓 Mac window IOS等平台应用 安装参考 xff1a docs nextcloud
  • Invalid <param> tag: Cannot load command parameter [robot_description]:

    在roslaunch运行的时候出现的问题解决 xff1a Traceback most recent call last File opt ros kinetic lib xacro xacro line 33 in xacro main
  • 树莓派3B+ 软件源更改

    树莓派3B 43 软件源更改 由于树莓派软件官方源在国外 xff0c 所以连接不稳定 xff0c 且速度慢 xff0c 所以安装初次进入系统后 xff0c 一定要修改一下软件源 国内软件源有很多 xff0c 在这里 xff0c 我推荐自己常
  • 树莓派3B+ 开启超频

    树莓派3B 43 开启超频 正如我们所知 xff0c 树莓派CPU默认频率是1200MHz xff0c 在一般状态下处于600MHz xff0c 对于这个CPU性能如何 xff0c 我就不多说了 xff0c 由于树莓派到现在都还没有官方64
  • 树莓派3B+ 人脸识别(OpenCV)

    树莓派3B 43 人脸识别 OpenCV 相信大家都看了前面的OpenCV安装和人脸检测教程 xff0c 已经跃跃欲试 xff0c 想要进行人脸识别了 xff0c 现在我们正式进入重头戏 人脸识别 的教程 注意 xff1a 该教程面向pyt
  • Window 设置远程桌面(兼容各平台)

    Window 设置远程桌面 xff08 兼容各平台 xff09 对于window远程桌面 xff0c 相信大家都不陌生 xff0c 它是一个非常好用的且稳定的工具 xff0c 远比第三方提供工具好用 但是 xff0c 有很多朋友在开启远程桌
  • 树莓派3B+ 远程下载服务器(Aria2)

    树莓派3B 43 远程下载服务器 xff08 Aria2 xff09 近来发现之前的部署的迅雷远程下载Xware在下载BT文件时会自动掉线 xff0c 鉴于迅雷不在对该固件的维护 xff0c 所以只能另辟蹊径 xff0c 现在比较主流的下载
  • 物理机下安装 VMware ESXi 6.7

    物理机下安装 VMware ESXi 6 7 ESXI虚拟平台是VMware出品的一个强大平台 xff0c 它可以直接安装在物理机上 xff0c 从而充分利用物理奖性能 xff0c 虚拟多个系统出来 ESXI是一个带WEB管理后台的软件 x
  • VMware ESXi 6.7 安装LEDE

    VMware ESXi 6 7 安装LEDE LEDE是Linux嵌入式开发环境项目 xff0c 在众多路由器固件中 xff0c LEDE可玩性最高的 xff0c 但要真的玩得转 xff0c 还是要一定的耐心 很多小伙伴一般都喜欢 爱快做主
  • vncserver 看不到桌面解决办法

    转载 xff1a http www th7 cn system lin 201308 43197 shtml ubuntu13 04安装vncserver后只显示桌面 不显示菜单栏解决 0 背景介绍 xff1a 一般的server操作系统是
  • Mininet教程(七)Mininet Walkthrough

    文章目录 Mininet教程 xff08 七 xff09 Mininet Walkthrough日常使用指令显示mininet开启选项开启Wireshark主机与路由器之间交互测试主机之间连通性运行一个简单的web服务器和客户端清理缓存 高
  • html的基本知识

    1 常用HTML标签 其他 br标签 xff1a 强制换行 lt br gt lt br gt 应用场景 用于强行换行 gt 不参与分类 xff0c 不能设置其他样式 1 xff09 行级标记 文本格式化标签 span标签 无语义标签 xf
  • 用VC++ 6.0 写贪吃蛇界面

    贪吃蛇界面 第一次写博客 xff0c 有点小紧张 xff0c 也有点激动 不多说了emmmm xff0c 自己跟着网上的视频 xff0c 用C语言做了一个贪吃蛇程序 xff0c 为了学年设计 欢迎界面的部分编译 emmmm xff0c 因为
  • 一、固定定位

    元素的位置相对于浏览器窗口是固定位置 即使窗口是滚动的它也不会移动 xff1a 特性 特性 xff1a 1 元素脱离正常文档流 xff0c 不占位 也脱离文本流 xff0c 全脱 2 始终相对于浏览器窗口四个角为原点进行固定定位的 3 不会
  • 定位元素的层级顺序

    层级 语法 z index n 标签添加定位之后 xff0c 可以覆盖在页面的其他标签上 后面加载的定位元素默认会覆盖在先加载的定位元素上 z index属性 xff1a 设置定位元素的叠放次序 特性 xff1a 1 z index的属性值
  • CSS 透明

    透明度属性 1 rgba r g b a 颜色模式 兼容性 xff1a IE6 7 8下不兼容 xff0c IE9 43 支持 使用 xff1a background color属性 color属性 border color属性等中设置透明
  • 数据类型和流程控制语句

    1 回顾 操作标签内容 闭合标签 标签 innerHTML 标签 innerText 标签 innerHTML 61 值 标签 innerText 61 值 表单标签 标签 value 标签 value 61 值 操作标签属性 标签 属性名
  • day02 JS交互

    1 回顾 基于对象和事件驱动的解释性脚本语言 js的组成 ECMAscript js的标准和核心 DOM 文档对象模型 BOM 浏览器对象模型 js的特性 基于对象 事件驱动 解释性 跨平台 js的引入方式 行间引入 在开始标签上加js 结
  • 一. js逻辑

    1 回顾 js的数据类型 5种基本的数据类型 number 数值 string 字符串 boolean 布尔 undefined 未定义 null 空对象 一种特殊的数据类型 复合 引用 对象 object 对象 array 数组 func