JavaScript基础-流程控制-if
流程控制基本概念
- 默认情况下,程序的运行流程是这样的:运行程序后,系统会按书写从上至下顺序执行程序中的每一行代码,但是这并不能满足我们所有的开发需求
- 实际开发中, 我们需要根据不同的条件执行不同的代码或者重复执行某一段代码
- 为了方便我们控制程序的运行流程,JavaScript提供3种流程结构,不同的流程结构可以实现不同的运行流程。这3种流程结构分别是顺序、选择、循环三种基本控制结构构造.
顺序结构:默认的流程结构。按照书写顺序从上至下执行每一条语句。
选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码。
循环结构:在给定条件成立的情况下,反复执行某一段代码。
选择结构-if基本概念
.if第一种形式
- 表示如果
条件表达式为真,执行语句块1,否则不执行。
if(条件表达式)
{
语句块1
}
后续语句;
- 示例:
if(age > 18)
{
console.log("开网卡");
}
2.if第二种形式
- 如果
条件表达式为真,则执行语句块1,否则执行语句块2
if(条件表达式)
{
语句块1
}else{
语句块2
}
- 示例:
if(age > 18)
{
console.log("开网卡");
}else{
console.log("喊你妈来");
}
- 特点:
- if和else后面的代码块({})只有一个会被执行
3.if第三种形式
- 如果
条件表达式1为真,则执行语句块1,否则判断条件表达式2,如果为真执行语句块2,否则再判断条件表达式3,如果真执行语句块3, 当表达式1、2、3都不满足,会执行最后一个else语句。
if(条件表达式1)
{
语句块1
}else if(条件表达式2){
语句块2
}else if(条件表达式3){
语句块3
}else{
语句块4
}
javascript学习群499415298
- 示例:
if(age>18)
{
console.log("给网卡");
}else if(age>25){
console.log("给名片");
}else if(age>40){
console.log("给房卡");
}else{
console.log("给好人卡");
}
- 特点:
- 这么多大括号中只有一个大括号中的内容会被执行
- 当执行到后面条件的时候证明前面的条件不满足
else if可以只有一个, 也可以有多个, 但是都必须添加在if和else之间
选择结构-if注意点
- 如果只有一条语句时if后面的大括号可以省略
if(age > 18)
console.log("开网卡");
- 注意点:
- 受到if管制的只有紧跟其后的那条语句
- 在企业开发中尽量不要省略大括号
if(false)
console.log("语句1");
console.log("语句2"); // 语句2会被输出
- 分号“;”也是一条语句, 空语句
if(10 > 2);
{
console.log("10 > 2");
}
// 输出结果: 10 > 2, if管制的紧跟其后的那个分号
// 如上语句相当于
if(10 > 2)
;
{
console.log("10 > 2");
}
// 如上语句相当于
if(10 > 2) {
;
}
// {}在JS中仅仅代表告诉系统里面的语句是一个整体, 没有别的用途,不会影响代码的执行
{
console.log("10 > 2");
}
- if else是一个整体, else匹配if的时候匹配离它最近的一个if
if(0)
if(1)
console.log("A");
else // 这个else会匹配上面的 if(1)
console.log("B");
else // 这个else会匹配上面的 if(0)
if (1)
console.log("C"); // 最终输出C
else
console.log("D");
- 对于非Boolean类型的值,会先转换为Boolean类型后再判断
if (0) {
console.log("123\n"); // 不会被执行
}
- 判断变量与常量问题
- 但凡遇到比较一个变量等于或者不等于某一个常量的时候,把常量写在前面
// if(a = 0) // 错误写法, 但不会报错
/*
本来是先判断变量a存储的值是否等于0,
但是如果不小心写成a=0,代表把0存储到a中.
为了避免这种问题判断是否相等时把常量写前面,
因为等号左边只能是变量, 所以如果少写一个等号会报错
*/
if (0 == a) {
console.log("a的值是0\n");
}else{
console.log("a的值不是0\n");
}
- if语句可以嵌套使用
var num = 8;
if (num >= 5)
{
if(num <= 10)
{
console.log("一个5~10之间的数")
}
}
选择结构-if练习
- 从键盘输入一个整数,判断其是否是偶数,如果是偶数就输出YES,否则输出NO;
// 1.定义一个变量保存用户输入的整数
var temp;
// 2.利用window.prompt()接收用户输入数据
// window.prompt返回给我们的是一个字符串, 需要转换为Number
temp = +(window.prompt("请输入一个整数"));
// 3.对用户输入的数据进行安全校验
if(isNaN(temp)){
alert("你是SB吗?");
}else{
// 3.判断用户输入的数据是否是偶数, 然后根据判断结果输出YES/NO
/*
if(temp % 2 == 0){
alert("YES");
}else{
alert("NO");
}
*/
(temp % 2 == 0) ? alert("YES") : alert("NO");
}
- 接收用户输入的1~7的整数,根据用户输入的整数,输出对应的星期几
// 1.定义变量保存用户输入的数据
var day;
// 2.利用window.prompt()接收用户输入数据
day = +(window.prompt("输入的1~7的整数"));
// 3.判断当前是星期几
if(day == 1){
console.log("星期一");
}else if(day == 2){
console.log("星期二");
}else if(day == 3){
console.log("星三");
}else if(day == 4){
console.log("星期四");
}else if(day == 5){
console.log("星期五");
}else if(day == 6){
console.log("星期六");
}else if(day == 7){
console.log("星期日");
}else{
console.log("滚犊子");
}
javascript学习群499415298
- 接收用户输入的一个整数month代表月份,根据月份输出对应的季节
// 1.定义变量保存用户输入的数据
var month;
// 2.利用window.prompt()接收用户输入数据
month = +(window.prompt("请输入一个1-12的月份"));
// 3.数据安全校验
if(isNaN(month)){
alert("火星SB?");
}else{
// 4.根据输入的数据判断输出对应的月份即可
if(month >= 3 && month <= 5){
alert("春季 ");
}else if(month >=6 && month <= 8){
alert("夏季");
}else if(month >=9 && month <= 11){
alert("秋季");
}else if(month == 12 || month == 1 || month == 2){
alert("冬季");
}else{
alert("火星季节");
}
}
// 1.定义变量保存用户输入的数据
var month;
// 2.利用window.prompt()接收用户输入数据
month = +(window.prompt("请输入一个1-12的月份"));
// 3.数据安全校验
if(isNaN(month)){
alert("火星SB?");
}else{
// 4.根据输入的数据判断输出对应的月份即可
if(month < 1 || month > 12){
alert("火星季节");
}else if(month >= 3 && month <= 5){
alert("春季 ");
}else if(month >=6 && month <= 8){
alert("夏季");
}else if(month >=9 && month <= 11){
alert("秋季");
}else{
alert("冬季");
}
}
// 1.定义变量保存用户输入的数据
var month;
// 2.利用window.prompt()接收用户输入数据
month = +(window.prompt("请输入一个1-12的月份"));
// 3.数据安全校验
if(isNaN(month)){
alert("火星SB?");
}else{
// 4.根据输入的数据判断输出对应的月份即可
if(month == 12 || month == 1 || month == 2){
alert("冬季"); // 没有进入, 剩下的必然是3-11
}else if(month >=9){
alert("秋季"); // 没有进入, 剩下的必然 3-8
}else if(month >=6){
alert("夏季"); // 没有进入, 剩下的必然 3-5
}else if(month >= 3){
alert("春季 ");
}else{ // 12 1 2
alert("火星季节");
}
}
- 从键盘输入2个整数,判断大小后输出较大的那个数
// 1.定义变量保存三个整数
var a, b;
// 2.利用window.prompt接收用户输入的数据
a = +(window.prompt("请输入内容"));
b = +(window.prompt("请输入内容"));
// 3.利用if进行两两比较
if(a > b){
console.log(a);
}else{
console.log(b);
}
/*
三元运算符好处:可以简化if else代码
弊端 :因为是一个运算符所以运算完必要要有一个结果。
简单用三元 复杂用if(阅读性好)
*/
console.log(a > b? a: b);
- 从键盘输入3个整数,排序后输出
- 如下做法代码严重没有扩展性,数值越多代码越多
// 1.定义变量保存三个整数
var a, b, c;
// 2.利用window.prompt接收用户输入的数据
a = +(window.prompt("请输入内容"));
b = +(window.prompt("请输入内容"));
c = +(window.prompt("请输入内容"));
// 方式1 写出所有方式
if (a >= b && b >=c) {
console.log(a, b, c);
}else if (a >= c && c >= b) {
console.log(a, c, b);
}else if (b >= a && a >= c) {
console.log(b, a, c);
}else if (b >= c && c >= a) {
console.log(b, c, a);
}else if (c >= a && a >= b) {
console.log(c, a, b);
}else if (c >= b && b >= a) {
console.log(c, b, a);
}
- 如下做法将来可以利用循环结构简化代码
选择排序, 每排完一次最值出现在第一位
// 1.定义变量保存三个整数
var a, b, c;
// 2.利用window.prompt接收用户输入的数据
a = +(window.prompt("请输入内容"));
b = +(window.prompt("请输入内容"));
c = +(window.prompt("请输入内容"));
// 方式2 选择排序
var temp;
if (a > b) {
temp = a;
a = b;
b = temp;
}
if (a > c) {
temp = a;
a = c;
c = temp;
}
if ( b > c) {
temp = b;
b = c;
c = temp;
}
console.log(a, b, c);
- 冒泡排序, 每排完一次最值出现在最后一位
// 1.定义变量保存三个整数
var a, b, c;
// 2.利用window.prompt接收用户输入的数据
a = +(window.prompt("请输入内容"));
b = +(window.prompt("请输入内容"));
c = +(window.prompt("请输入内容"));
// 方式3 冒泡排序
var temp;
if (a > b) {
temp = a;
a = b;
b = temp;
}
if (b > c) {
temp = b;
b = c;
c = temp;
}
if ( a > b) {
temp = a;
a = b;
b = temp;
}
console.log(a, b, c);
- 石头剪子布实现
// 定义 0.剪刀 1.石头 2.布
// 1、定义变量 玩家和电脑
var player,computer = 0;
// 2、让电脑先出拳
var temp = Math.random() * 3;
// 3、用户出拳
var player = window.prompt("请出拳:0.剪刀 1.石头 2.布");
// 数据合法性的校验
if (player<0||player>2) {
window.prompt("请重新出拳:0.剪刀 1.石头 2.布");
}else{
// 4、判断比较 //先判断用户赢的情况
if((player==0&&computer==2)||
(player==1&&computer==0)||
(player==2&&computer==1)){
window.alert("我靠,你赢了!\n");
}else if((computer==0&&player==2)||
(computer==1&&player==0)||
(computer==2&&player==1)){
window.alert("很遗憾,你输了!\n");
}else{
window.alert("平局\n");
}
}
javascript学习群499415298
如果想看到更加系统的文章和学习方法经验可以关注的微信号:‘web前端EDU’或者‘webxh5’关注后回复‘2017’可以领取一套完整的学习视频
JavaScript基础-流程控制-if的更多相关文章
- JavaScript基础流程控制(3)
day51 参考:https://www.cnblogs.com/liwenzhou/p/8004649.html for循环 while循环 三元运算 a>b条件成立,选a,不成立选b
- 小白学 Python(8):基础流程控制(下)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- Java编程基础——流程控制
Java编程基础——流程控制 摘要:本文主要介绍Java编程中的流程控制语句. 分类 流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下三种: 顺序结构:从上到下依次执行每条语句操作 ...
- JavaScript的流程控制
JavaScript的流程控制 1.if...else if...else... 2.while 3.for 4.forEach 5.for...in... 完整代码如下: <!DOCTYPE ...
- Python基础—流程控制
一.Python流程控制 计算机程序在解决某个具体问题时,包括三种情形,即顺序执行所有的语句.选择执行部分的语句和循环执行部分语句,这正好对应着程序设计中的三种程序执行结构流程:顺序结构.选择结构和循 ...
- 黑马程序员——C语言基础 流程控制 选择结构和循环结构
---恢复内容开始--- Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)流程控制 1> 顺序结构:默认的流程 ...
- javascript之流程控制 和函数的容易忽略点
1.流程控制 1> for in 仅用于 对象的遍历: var box={ "name":'小红', 'age':18, 'height':165 }; for(var b ...
- Java基础-流程控制(04)
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说程序的流程对运行结果有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过控制语句的执行顺序来实现我 ...
- python基础-->流程控制-->分支结构-->单项分支-->双向分支
# ###流程控制 ''' 流程:代码执行过程 流程控制:对代码执行过程的管控 顺序结构:代码默认从上到下依次执行 分支结构:对代码执行过程的管控 循环机构: while for ..in.... 分 ...
随机推荐
- 008.Adding a model to an ASP.NET Core MVC app --【在 asp.net core mvc 中添加一个model (模型)】
Adding a model to an ASP.NET Core MVC app在 asp.net core mvc 中添加一个model (模型)2017-3-30 8 分钟阅读时长 本文内容1. ...
- 富文本编辑器UEditor自定义工具栏(一、基础配置与字体、背景色、行间距、超链接实现)
导读:UEditor 是由百度「FEX前端研发团队」开发的所见即所得富文本web编辑器,功能强大,可定制,是一款优秀的国产在线富文本编辑器,编辑器内可插入图片.音频.视频等. 一.UEditor自定义 ...
- javascript之数组快速排序
快速排序思想其实还是挺简单的,分三步走: 1.在数组中找到基准点,其他数与之比较. 2.建立两个数组,小于基准点的数存储在左边数组,大于基准点的数存储在右边数组. 3.拼接数组,然后左边数组与右边数组 ...
- Jenkins 的svn插件下载的代码不是最新代码的问题
项目组使用Jenkins做自动化的每日编译和单元测试.经常发现,当提交完代码后,在Jenkins的每日编译代码还是旧代码,刚提交的代码并没有check out出来. 后来发现Jenkins服务器的时间 ...
- (转)Java线程:新特征-线程池
Java线程:新特征-线程池 Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利 ...
- Eclipse修改背景保护色及变量、方法的高亮
1.修改背景保护色 eclipse操作界面默认颜色为白色.对于我们长期使用电脑编程的人来说,白色很刺激我们的眼睛,所以我经常会改变workspace的背景色,使眼睛舒服一些. 设置方法如下: 1.打开 ...
- 深入理解 JavaScript(三)
强大的原型和原型链 前言 JavaScript 不包含传统的类继承模型,而是使用 prototypal 原型模型. 虽然这经常被当作是 JavaScript 的缺点被提及,其实基于原型的继承模型比传统 ...
- FPGA计算3行同列数据之和
实验:FPGA计算3行同列数据之和 实验要求:PC机通过串口发送3行数据(一行有56个数据,3行共有56*3=168个数据)给FPGA,FPGA计算3行同一列数据的和,并将结果通过串口返回给上位机. ...
- phpMyAdmin安装部署
phpMyAdmin 是一个用PHP编写的软件工具,可以通过web方式控制和操作MySQL数据库.通过phpMyAdmin 可以完全对数据库进行操作,例如建立.复制和删除数据等等.如果使用合适的工具, ...
- 基于angular2x+ng-bootstrap构建后台管理系统界面(干货)
写在前面的话 近来公司要做一个后台管理系统,人手比较少,于是作为一个前端也参与进来,其实据我所知,大部分的公司还是后台自己捣鼓的. 在后台没有到位的情况下,前端应该使用什么技术也着实让我为难了一把.经 ...