每日一记
条件分支
一,if
括号里的条件表达式计算结果是 true,就会执行对应的代码块
如果有多个语句要执行,我们必须将要执行的代码块封装在大括号内
二,布尔转换
if语句会计算圆括号内的表达式,并将计算结果转换为布尔型
数字0、空字符串””、null、undefined和NaN都会被转换成false。因为它们被称为“假值(falsy)”。
其他值被转换为 true,所以它们被称为“真值(truthy)”。
三,else
if 语句判断条件不成立,就会执行它内部的代码
四,多个条件
let year = prompt('提示语', ''); #设置变量并赋值
#prompt相当于input
if (year < 2015) { #判断条件
alert( 'Too early...' ); #成立就执行alert,相当于print
} else if (year > 2015) { #另一个条件判断
alert( 'Too late' );
} else { #若上面的条件都不满足
alert( 'Exactly!' );
} #大括号要把整个if语句的执行部分都包含起来
五,条件运算符?
(有时被称为三元运算符,因为该运算符中有三个操作数,它是 JavaScript 中唯一一个有这么多操作数的运算符)
根据一个条件去赋值一个变量
let result = condition ? value1 : value2;
计算条件结果,如果结果为真,则返回 value1,否则返回 value2。
condition(条件判断)尽量用括号包起来
注意空格
六,多个?
let age = prompt('age?', 18);
let message = (age < 3) ? 'Hi, baby!' :
(age < 18) ? 'Hello!' :
(age < 100) ? 'Greetings!' :
'What an unusual age!';
alert( message );
相当于
if (age < 3) {
message = 'Hi, baby!';
} else if (age < 18) {
message = 'Hello!';
} else if (age < 100) {
message = 'Greetings!';
} else {
message = 'What an unusual age!';
}
七,?的非常规使用
有时可以使用问号 ? 来代替 if 语句:
let company = prompt('Which company created JavaScript?', '');
(company == 'Netscape') ?
alert('Right!') : alert('Wrong.');
注意缩进
逻辑运算符
||(或)
任意一个参数为 true,返回的结果就为 true,否则返回 false
如果操作数不是布尔值,那么它将会被转化为布尔值来参与运算
例如 1 被作为 true 处理, 0 则被作为 false
&&(与)
两个操作数都是真值时,与运算返回 true,否则返回 false
函数 alert 返回了 undefined,所以会运算并输出alert然后停止
!(非)
将操作数转化为布尔类型:true/false
返回相反的值
!! 有时候用来将某个值转化为布尔类型
(第一个非运算将该值转化为布尔类型并取反,第二个非运算再次取反。就得到了布尔值的转化)
??(空值合并运算符)
a ?? b 的结果是:
第一个参数不是 null/undefined,则返回第一个参数,否则返回第二个参数
拓展用法:
||寻找第一个真值,&&寻找第一个假值
原理:一个或运算 || 的链,将返回第一个真值,如果不存在真值,就返回该链的最后一个值
运用:(a)获取变量列表或者表达式中的第一个真值
(b)短路求值
注意: && 的优先级比或 || 要高
不要用 || 或 && 来取代 if
非运算符 ! 的优先级在所有逻辑运算符里面最高
?? 运算符的优先级与 || 相同
??返回第一个已定义的值
请加上括号!!!
训练(登录校验)
let firstName = null;
let lastName = null;
let nickName = "Supercoder";
// 显示第一个已定义的值:
alert(firstName ?? lastName ?? nickName ?? "匿名");
let userName = prompt("Who's there?", '');
if (userName === 'Admin') {
let pass = prompt('Password?', '');
if (pass === 'TheMaster') {
alert( 'Welcome!' );
} else if (pass === '' || pass === null) {
alert( 'Canceled' );
} else {
alert( 'Wrong password' );
}
} else if (userName === '' || userName === null) {
alert( 'Canceled' );
} else {
alert( "I don't know you" );
}