二、选择结构

article/2025/4/23 3:23:29

目录

1.JavaScript的组成

1.三大核心

2.window对象的常用方法

2.if选择结构

3.多重if选择结构

4.嵌套if选择结构

5.switch选择结构

6.三元表达式


1.JavaScript的组成

1.三大核心

  1. ESMAScript 核心语法(标准规范)-> ES6
  2. BOM 浏览器对象模式,其实就是window对象,该对象可以操作浏览器
  3. DOM 文档对象模型,其实就是document对象,该对象可以操作网页里面的所有元素

2.window对象的常用方法

1.alert()方法,用于打开消息框

2.prompt()方法,用于打开输入框,输入框返回的数据的类型是string类型

3.confirm()方法,用于打开确定框,确认框里面有两个按钮确定取消点击确定按钮返回true,点击取消按钮返回false

4.parseInt()方法,用于将字符串数据强转为整型

5.parseFloat()方法,用于将字符串数据强转为浮点型

6.isNaN()方法,用于判断一份数据是不是NaN数据(not a number

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>window对象的常用方法</title>
</head>
<body><script>// window对象是js的内置对象,用于操作BOM,它里面提供了很多操作浏览器的方法。// console.log(window);// 弹框方法:// alert()方法,用于打开消息框// window.alert('你好')// prompt()方法,用于打开输入框,该方法会返回输入的结果,类型是字符串// var name = window.prompt('请输入姓名:')// console.log(name);// confirm()方法,用于打开确认框,该方法的返回值是boolean类型// var isok = window.confirm('确定分手吗?')// console.log(isok);// 类型转换方法:var str1 = '100.55'console.log(typeof str1);// parseInt()方法,用于将字符串强转为整型// 注意:window对象是浏览器的默认对象,所以在实际使用时,可以省略var num1 = parseInt(str1)console.log(str1);console.log(num1);console.log(typeof num1);// parseFloat()方法,用于将字符串强转为浮点型var num2 = parseFloat(str1)console.log(num2);console.log(typeof num2);// isNaN()方法,用于判断一份数据是不是NaN数据(not a number)// 就是判断一个数据,是不是不是数字,不是数字返回true,是数字返回false。var str2 = '100'var str3 = '100.55'var str4 = '你好呀'console.log(isNaN(str2));console.log(isNaN(str3));console.log(isNaN(str4));</script>
</body>
</html>

控制台显示为:

2.if选择结构

if选择结构的语法是:if(判断条件){满足条件之后,执行的代码块}

if-else选择结构if()里面的条件成立执行if{}里面的代码块,否则执行else{}里面的代码块

注意:当if或者else里面只有条件语句的时候,可以省略{}

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>if选择结构</title>
</head>
<body><script>// 如果比赛成绩在80分以上,将获得400元var score = 20// if()里面写条件,条件返回true,执行{}里面的代码if(score>=80){console.log('获得400元');}console.log('----------------------------');// 如果比赛成绩在60分以上,获得200元,否则罚抄50遍if(score>=60){console.log('获得200元');}else{// else语句,一定要配合if语句,不能单独使用。// 在if不成立的时候,执行else语句。console.log('罚抄50遍');}console.log('----------------------------');// 当if 和 else 的代码块只有一条语句时,可以省略{}if(score>=70)console.log('奖励100元');else console.log('罚抄50遍');</script>
</body>
</html>

控制台显示为:

3.多重if选择结构

多重if选择结构里面,满足其中一个条件,执行该条件对应的代码,执行完成后跳出整个程序结构。

如果所有的条件都不成立,有else,就执行else;没有else,整个程序结构结束。

练习题:

如果有5000万,在北京买房子

如果有3000万,在上海买房子

如果有1000万,在深圳买房子

如果有800万,在广州买房子

如果有300万,在南京买房子

否则,不买房子

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>多重if选择结构</title>
</head><body><script>/* 如果有5000万,在北京买房子如果有3000万,在上海买房子如果有1000万,在深圳买房子如果有800万,在广州买房子如果有300万,在南京买房子否则,不买房子*/// 多重if选择结构里面,满足其中一个条件,执行该条件对应的代码,执行完成后跳出整个程序结构。// 所以,使用多重if选择结构时,判断大于要先比较大的数,判断小于要先比较小的数。var money = parseInt(prompt('请输入您的存款(单位:万)'))if (money >= 5000) {alert('在北京买房子')} else if (money >= 3000) {alert('在上海买房子')} else if (money >= 1000) {alert('在深圳买房子')} else if (money >= 800) {alert('在广州买房子')} else if (money >= 300) {alert('在南京买房子')} else {alert('否则,不买房子')}</script>
</body></html>

弹框显示为:

 

4.嵌套if选择结构

嵌套if选择结构:就是在一个完整的if或者else的结构中,继续使用if结构语句。

练习题:

请输入是否是会员,输入y是会员,输入n不是会员

请输入消费金额

会员:消费打8折,满100元打6折

非会员:消费满200元打9折,不满200元不打折

最后输出本次实际消费金额

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>嵌套if选择结构</title>
</head>
<body><script>// 嵌套if选择结构:就是在一个完整的if或者else的结构中,继续使用if结构语句。/* 练习题:请输入是否是会员,输入y是会员,输入n不是会员请输入消费金额会员:消费打8折,满100元打6折非会员:消费满200元打9折,不满200元不打折最后输出本次实际消费金额*/var ishy = prompt('是否是会员(y/n):')var money = parseFloat(prompt('请输入消费金额:'))// 第一层if,判断是否是会员if(ishy=='y'){// 第二层if,判断消费金额//消费金额满100,打6折if(money>=100){money *= 0.6   //money = money * 0.6}else{money *= 0.8}}else{//非会员,消费满200,打9折if(money>=200){money *= 0.9}}alert('本次购物的消费金额:'+money)</script>
</body>
</html>

弹框显示为:

 

 

多重if和嵌套if的综合练习题:

输入年 月 输出该月份有多少天?

闰年公式:年份能被4整除,但不能被100整除;或者年份能被400整除。闰年的2月份是29天,平年的2月份是28天。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>多重if和嵌套if的综合练习</title>
</head>
<body><script>/* 输入年 月 输出该月份有多少天?闰年公式:年份能被4整除,但不能被100整除;或者年份能被400整除。闰年的2月份是29天,平年的2月份是28天。*/var year = parseInt(prompt('请输入年份:'))var month = parseInt(prompt('请输入月份:'))var days = 0;  //保存天数if(month===1 || month===3 || month===5 || month===7 || month===8 || month===10 || month===12){days = 31}else if(month===4 || month===6 || month===9 || month===11){days = 30}else{// 二月份,需要判断年份if(year%4===0 && year%100!=0 || year%400===0){days = 29}else{days = 28}}// 这里的+号,用于字符串的拼接alert(year+'年'+month+'月,有'+days+'天')</script>
</body>
</html>

弹框显示为:

 

 

5.switch选择结构

switch选择结构,也是用于进行多分支判断,语法结构比多重if简洁。

但是,switch选择结构只能进行等值判断。

语法结构是:将需要进行等值判断的变量,放到()里面。在{}里面通过case后面的值跟它进行等值判断。

注意1:case语句,在结束之前,通常都要加上break,表示跳出switch选择结构,因为,

switch选择结构,里面的case一旦判断成立,后面的case就不会再进行判断了。

注意2:如果多个case的输出结果相同,可以将多个case的结果合并,并省略前面case的break。

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>switch选择结构</title>
</head><body><script>// 名次为:1.奖励汽车,2.奖励电脑,3.奖励手机,4.没有奖励,否则罚抄var mc = 1if (mc === 1) {console.log('奖励汽车');} else if (mc === 2) {console.log('奖励电脑');} else if (mc === 3) {console.log('奖励手机');} else if (mc === 4) {console.log('没有奖励');} else {console.log('绕操场跑步10圈');}console.log('---------------------------------');/* switch选择结构,也是用于进行多分支判断,语法结构比多重if简洁。但是,switch选择结构只能进行等值判断。*/// 将需要判断的变量放在()里面,用{}里面的case挨个去跟()里面的变量比较 // 满足其中某个case后,就执行case里面的代码// 但是,一定要在case语句的最下面,添加break,表示跳出整个switch// 因为,满足其中一个case后,其他的case就不会再判断了,而是直接执行。   switch (mc) {case 1:console.log('奖励汽车');break;case 2:console.log('奖励电脑');break;case 3:console.log('奖励手机');break;case 4:console.log('没有奖励');break;default:console.log('罚抄代码');break;}console.log('-----------------------------');//收入今天的是周几: 1 3 5超市所有商品打8折,2 4 6 超市所有商品打7折,7 打五折//如果多个case的输出结果相同,可以将多个case的结果合并,并省略前面case的breakvar week = parseInt(prompt('请输入今天是周几:'))switch (week) {case 1:case 3:case 5:alert('超市所有商品打8折')break;  //跳出整个switchcase 2:case 4: case 6: alert('超市所有商品打7折')break;// 当所有的case都不成立时,有default,就执行defaultdefault: alert('超市所有商品打5折')break;}</script>
</body></html>

控制台显示为:

弹框显示为:

 

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>switch练习题</title>
</head><body><script>// 输入年份和月份和日期,输出该日期是全年的第多少天// 比如:年份是2021 月份是11 日期是9,算出2021-11-9是全年的第多少天// 技巧是:case不加break,并且反着写。var year = parseInt(prompt('请输入年份:'))var month = parseInt(prompt('请输入月份:'))var day = parseInt(prompt('请输入日期:'))var sum = 0  //用于保存总天数//利用switch语句,累加整月天数switch (month - 1) {case 12:sum += 31case 11:sum += 30case 10:sum += 31case 9:sum += 30case 8:sum += 31case 7:sum += 31case 6:sum += 30case 5:sum += 31case 4:sum += 30case 3:sum += 31case 2:if (year % 4 === 0 && year % 100 != 0 || year % 400 === 0) {sum += 29} else {sum += 28}case 1:sum += 31}// 再加上当前月份的天数sum += dayalert(year + '-' + month + '-' + day + '是全年的第' + sum + '天')</script>
</body></html>

弹框显示为:

 

 

 

6.三元表达式

三元表达式,可以简化基本的if-else语句结构

var c = a > 10 ? 100 : 200

三元表达式,也可以简化复杂的if-else语句结构

var e = a > 20 ? 200 : (a > 10 ? 100 : 300)
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>三元表达式</title>
</head>
<body><script>// 三元表达式,可以简化基本的if-else语句结构var a = 100var b = 200var c;if(a>b){c = 300}else{c = 400}console.log(c);// 三元表达式:?左边的表达式返回true,返回?右边的结果,否则返回:右边的结果。var d = a>b ? 300 : 400console.log(d);console.log('-------------------------');// 三元表达式,也可以简化复杂的if-else语句结构var num = 1var sex;if(num===1){sex='男'}else if(num===2){sex='女'}else {sex='未知'}console.log(sex);var sex2 = num===1 ? '男' : (num===2 ? '女' : '未知')console.log(sex2);</script>
</body>
</html>

控制台显示为:


http://chatgpt.dhexx.cn/article/uKneJ8h9.shtml

相关文章

选择结构的使用

一、掌握if结构语句 二、掌握switch分支结构 三、两种结构语句的比较 学习结构之前首先要明白为什么要学习结构&#xff0c;结构有什么作用&#xff0c;有哪些结构&#xff0c; 首先我们要明白java代码中&#xff0c;程序运行的原理是从上到下一行一行运行的&#xff0c;如果…

C语言-选择结构

目录 选择结构 一、if-else语句 1.单选择 2.双选择 3.多选择 二.switch语句 选择结构 选择结构用于判断给定的条件&#xff0c;根据判断的结果判断某些条件&#xff0c;根据判断的结果来控制程序的流程 一、if-else语句 1.单选择 单选择通过if语句就可以实现&#xff0c…

Insert keyframe giving keying set failed to insert any key frames问题(已解决)

Blender 2.81 beta 问题描述 骨骼动画&#xff0c;进入姿态模式以后&#xff0c;调整了姿势然后按I键尝试插入关键帧&#xff0c;但是报错&#xff0c;报错信息很费解 “插入关键帧的帧位置” 于是切换到英文版显示 “Insert keyframe giving keying set failed to insert any…

论文阅读笔记:(2015, ijrr) Keyframe-based visual–inertial odometry using nonlinear optimization

算是基于滑窗的VIO的必读文章吧&#xff0c;很详细地说了边缘化~ paper: http://in.ruc.edu.cn/wp-content/uploads/2021/01/Keyframe-Based-Visual-Inertial-Odometry-Using-Nonlinear-Optimization.pdfhttp://in.ruc.edu.cn/wp-content/uploads/2021/01/Keyframe-Based-Vis…

ORB-SLAM2源码笔记(4)——帧Frame和关键帧KeyFrame

Frame类中的相机参数为static类型&#xff0c;表示所有Frame对象共享一份相机参数 特征点提取ExtractORB 在Frame类构造函数中调用成员变量mpORBextractorLeft和mpORBextractorRight的()运算符进行特征点提取. 畸变矫正前的左目特征点是mvKeys[i]. 畸变矫正后的左目特征点是m…

《UnityAPI.Keyframe关键帧》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Keyframe+inTangent+outTangent+立钻哥哥++OK++)

《UnityAPI.Keyframe关键帧》 版本 作者 参与者 完成日期 备注 UnityAPI_Keyframe_V01_1.0 严立钻 2020.06.28 #《UnityAPI.Keyframe关键帧》发布说明&#xff1a; “UnityAPI.Keyframe关键帧”是对UnityAPI中Keyframe关键帧类的剖析和拓展&…

ORB-SLAM2算法10之图像关键帧KeyFrame

文章目录 0 引言1 KeyFrame类1.1 构造函数1.2 成员函数1.3 关键帧之间共视图1.3.1 AddConnection1.3.2 UpdateBestCovisibles1.3.3 UpdateConnections1.3.4 EraseConnection1.3.5 SetBadFlag 1.4 地图点1.5 生成树 2 KeyFrame用途 0 引言 ORB-SLAM2算法7详细了解了System主类和…

CSS3 @keyframe动画的基本用法与常见错误用法

前言 随着CSS3的推出与普及&#xff0c;其各种属性开始被广泛使用。尤其是其动画功能&#xff0c;对于一些简单的动画实现&#xff0c;实在没必要用Javascript去实现&#xff0c;这是keyframes动画就派上了用场。今天来讲一下keyframes的一些基本的用法和常见坑。 【本文志于…

【微信小程序】动画入门keyframe

【微信小程序—动画工坊】动画入门 前情 需要了解的前置知识&#xff1a; 子代选择器基本布局 分析 可以将任务进行一下拆分。 如何让小球跑动起来&#xff1f; 通过keyframe创造动画函数&#xff0c;然后再通过animation绑定创造动画函数 keyframe的百分比代表动画的进度…

ORB-SLAM2 --- KeyFrame::UpdateConnections 函数

目录 一、函数作用 二、函数流程 三、code 四、函数解析 一、函数作用 更新关键帧之间的连接图。 更新变量 mConnectedKeyFrameWeights&#xff1a;当前关键帧的共视信息&#xff0c;记录当前关键帧共视关键帧的信息&#xff08;哪一帧和当前关键帧有共视&#xff0c;共视…

三谈属性动画——Keyframe以及ViewPropertyAnimator

Android动画和Transition系列文章 初识属性动画——使用Animator创建动画再谈属性动画——介绍以及自定义Interpolator插值器三谈属性动画——Keyframe以及ViewPropertyAnimator让View具有减速效果的动画——FlingAnimation让View具有弹性效果的动画——SpringAnimation让View…

ORB-SLAM2 --- KeyFrame::SetBadFlag函数

目录 1.函数作用 2.code 3.函数解析 1.函数作用 真正地执行删除关键帧的操作。 需要删除的是该关键帧和其他所有帧、地图点之间的连接关系。 2.code void KeyFrame::SetBadFlag() { // Step 1 首先处理一下删除不了的特殊情况{unique_lock<mutex> lock(mMutexConn…

【视觉SLAM】Fast Relocalisation and Loop Closing in Keyframe-Based SLAM

See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/263621033 Article in Proceedings - IEEE International Conference on Robotics and Automation June 2014 DOI: 10.1109/ICRA.2014.6906953 先读Abstrac…

Android属性动画 Keyframe

转载请标明出处&#xff1a;http://blog.csdn.net/zhaoyanjun6/article/details/118963313 本文出自【赵彦军的博客】 文章目录 KeyFrame实战 KeyFrame KeyFrame 主要用于自定义控制动画速率&#xff0c;KeyFrame 直译过来就是关键帧。 而关键帧这个概念是从动画里学来的&…

ORB-SLAM2代码详解05: 关键帧KeyFrame

pdf版本笔记的下载地址: ORB-SLAM2代码详解05_关键帧KeyFrame,排版更美观一点,这个网站的默认排版太丑了&#xff08;访问密码&#xff1a;3834&#xff09; ORB-SLAM2代码详解05: 关键帧KeyFrame 各成员函数/变量共视图: mConnectedKeyFrameWeights基于对地图点的观测重新构造…

@keyframes详解

一、transform 和keyframes动画的区别&#xff1a; keyframes动画是循环的&#xff0c;而transform 只执行一遍. 二、keyframes CSS3中添加的新属性animation是用来为元素实现动画效果的&#xff0c;但是animation无法单独担当起实现动画的效果。承载动画的另一个属性——keyfr…

KeyFrame类

关键帧类主要是进行Covisbility Graph&#xff0c; Essential&#xff0c;Spanning Tree 三个图的维护&#xff0c;更新。 其中不涉及关键帧的筛选策略问题&#xff0c;只设置了剔除某关键帧和剔除关键帧后如何更新图的方法。总体来说&#xff0c;不难理解。 PS:本文设计多线程…

自定义控件三部曲之动画篇(八)——PropertyValuesHolder与Keyframe

前言&#xff1a;只有比牛人跑的更快&#xff0c;才有可能追上他的脚步。 相关文章&#xff1a; 《Android自定义控件三部曲文章索引》:http://blog.csdn.net/harvic880925/article/details/50995268 前几篇给大家讲了ValueAnimator、ObjectAnimator的知识&#xff0c;讲解了…

ORB-SLAM2从理论到代码实现(十四):KeyFrame类

1. 原理分析 KeyFrame为关键帧&#xff0c;关键帧之所以存在是因为优化需要&#xff0c;所以KeyFrame的几乎所有内容都是位优化服务的。该类中的函数较多&#xff0c;我们需要归类梳理一下&#xff0c;明白其功能原理&#xff0c;才能真正弄懂它的内容。 图优化需要构建节点和…

css基础(九)--keyframe

33.keyframe 关键帧&#xff0c;类似于flash中的关键帧&#xff0c;以keyframes开头紧跟着动画名称加上花括号&#xff5b;。。。&#xff5d;&#xff0c;括号中表示不同时间段样式规则 keyframes changecolor{ 0%{ background: red; } 100%{ background: green; } } 样式规…