JavaScript基础(2)


每日一记

条件分支

一,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" );
}

每日一句

人的一生中总会有某个时刻,需要坚守自己的决定。一个说“这就是我,这就是我的选择”的时刻。

评论
  目录