if分支语句
if分支语句的语法结构
语法结构有三种(单分支,双分支,多分支)
重点内容1:必须熟悉布尔值真假情况(0,‘’,null,undefined,NaN,false)
重点内容2:if的条件可以是任意的表达式,但是结果一定是布尔值,系统自动调用Boolean方法进行处理。
1、单分支
语法: if(条件){满足条件(条件为真时)执行的语句块}
if (1) {
console.log('语句会执行');
}
if ('饿了困了') {
console.log('喝东鹏特饮');
}
if (false) {
console.log('我也想出来转转');
}
/* isNaN函数会首先尝试将这个参数转换为数值,然后才会对
转换后的结果是否是NaN进行判断。 */
var num = prompt('请输入数字:');
if (!isNaN(num)) { //是数字
console.log('你输入的是数字:' + num);
}
2、双分支
语法: f(条件){ 满足条件(条件为真)执行的语句块 } else { 不满足条件(条件为假)执行的语句块 }
var num = prompt('请输入数字:');
if (!isNaN(num)) { //是数字
alert('你输入的是数字:' + num);
} else {
alert('你输入的不是一个数字');
/* 案例:输出数字,判断数字是奇数还偶数(if语句的嵌套:if语句
里面存在if语句) */
var num = prompt('请输入数字:'); //prompt里面输入的内容都是字符串格式的
if (!isNaN(num)) { //是数字执行这里 isNaN将字符串格式的数字转换成数字
// 继续判断数字是奇数还是偶数
if (num % 2 === 0) { //偶数
alert('你输入的数字' + num + '是偶数');
} else { // 奇数
alert('你输入的数字' + num + '是奇数');
}
} else { //不是数字执行这里
alert('你输入的不是一个数字');
}
3、多分支
**语法:**if (条件1) {条件1为真执行的语句块}
else if(条件2) {条件2为真执行的语句块}
else if(条件3) {条件3为真执行的语句块}
else if(条件4) {条件4为真执行的语句块}
else if(条件5) {条件5为真执行的语句块}
// 案例:输出数字,判断数字>0/<0/=0
var num = prompt('请输入数字:');
if (num === '') {
console.log('你没有输入内容');
} else if (num > 0) {
console.log('是一个正数');
} else if (num < 0) {
console.log('是一个负数');
} else if (num == 0) {
console.log('是数字0');
} else {
console.log('输入有误');
}
if分支语句的应用
案例1: 使用 prompt 函数 接收一个年份 判断输入的年份 是否是闰年 将结果输出到控制台, 闰年条件:能够被4整除,同时不能够被100整除,或者能被400整除。
if (year !== '') { //最大的可能不为空
if (!isNaN(year)) { //判断是数字,
if (year >= 1000 && year <= 9999) { //同时是4位的数字
if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) { //是否闰年
alert('闰年');
} else {
alert('非闰年');
}
} else {
alert('你输入的数字不在范围内');
}
} else { //输入的内容不满足条件
alert('输入不是数字,请重新输入');
}
} else {
alert('请输入')
}
案例1拓展: 合并条件
if (year !== '' && !isNaN(year) && (year >= 1000 && year <= 9999) && (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0)) {
alert('闰年')
} else {
alert('你可能没有输入,可能不是数字,可能不在范围内,可能不是闰年');
}
案例2: 根据公式(身高-108)*2 = 体重,可以有10斤左右的浮动,来观察测试者体重是否标准(身高:cm)
// 思路:
// 结果:标准,偏胖,偏瘦(三个条件)
// 偏胖:大于 (身高-108) * 2 + 10
// 偏瘦:小于 (身高-108) * 2 - 10
// 标准:区间
var height = prompt('请输入身高cm:');
var weight = prompt('请输入体重斤');
var maxWeight = (height - 108) * 2 + 10;
var minWeight = (height - 108) * 2 - 10;
if (weight > maxWeight) {
alert('偏胖');
} else if (weight <= maxWeight && weight >= minWeight) { //标准,区间
alert('标准身材');
} else if (weight < minWeight) {
alert('偏瘦');
} else {
alert('输入有误');
}
总结if的特点
1.if的三种结构(单分支,双分支,多分支)
2.if的条件可以是任意的表达式,但是结果一定是布尔值,系统自动调用Boolean方法对表达式进行求值。
3.if语句满足一个分支,立刻结束
4.尽量将最大的可能给if语句,如果满足if,else短路操作(代码不执行),同时else可以省略。
5.合并条件,提示错误或者其他信息的时候就不够准确。嵌套使用,提升用户体验,多条件使用,减少代码。
// 解析
// 输入数字4,执行四次条件
// 输入数字3,执行三次条件
// 输入数字1,执行一次条件
// 输入数字5,执行五次条件
// 一旦找到目标,立刻结束
var num = +prompt('请输入一个数字:');
if (num === 1) {
console.log(1);
} else if (num === 2) {
console.log(2);
} else if (num === 3) {
console.log(3);
} else if (num === 4) {
console.log(4);
} else {
console.log('其他情况');
}
三目运算符
语法:条件 ? 满足条件执行的一条语句 : 不满足条件的一条语句
1.三元运算符,就是用两个符号(?:)组成一个语句
2.三元运算符只是对if else语句的一个简写形式
3.三元运算符可以嵌套使用,而且具有返回值,整个运算符
// 例子:满了22岁,可以结婚,否则继续单身
//if语句
var age = 25;
if (age > 22) {
console.log('可以结婚');
} else {
console.log('继续单身');
}
//三目运算
var age = 25;
age > 22 ? console.log('可以结婚') : console.log('继续单身');
console.log(age > 22 ? '可以结婚' : '继续单身');
案例1 判断奇偶:
var num = 10;
var result = num % 2 === 0 ? '偶数' : '奇数';
console.log(result);
案例2 求下面三个数字的最大值 - 唯一的优势:
var a = 10;
var b = 20;
var c = 7;
var max = a > b ? (a > c ? a : c) : (b > c ? b : c);
console.log(max);
// 思路
// 先比较a > b 如果满足,比较a和c即可
// 如果不满足,b > a,比较b和c即可
运算符优先级
// 1.推荐的方式:利用添加括号解决,有括号先算括号。
// 2.常见的运算符优先级
()
++ --
* / %
+ -
> < >= <= == != === !==
&& ||
?:
= +=