飙血推荐
  • HTML教程
  • MySQL教程
  • JavaScript基础教程
  • php入门教程
  • JavaScript正则表达式运用
  • Excel函数教程
  • UEditor使用文档
  • AngularJS教程
  • ThinkPHP5.0教程

JavaScript 条件判断 if

时间:2021-11-24  作者:匿名  

条件判断:IF,'?'

有时,我们需要根据不同的条件执行不同的操作。

为此,我们可以使用if语句和条件运算符?,也称为“问号”运算符。

“IF”语句

该if(...)语句计算括号中的条件,如果结果为true,则执行代码块。

例如:

<!DOCTYPE HTML>
<html>
<body>
  <script>
    let year = prompt('请输入今年是哪一年?', '');
    if (year == 2021) alert( '你答对了!' );
  </script>
</body>
</html>

在上面的示例中,条件是一个简单的相等性检查 ( year == 2021),当你输入值是2021时弹出一个答对的提示,但它可以复杂得多,比如搭错了怎么处理,再比如答对以后做更多的操作。

如果我们想执行多个语句,我们必须将我们的代码块括在花括号中:

if (year == 2021) {
  alert( "That's correct!" );
  alert( "You're so smart!" );
}

我们建议{}每次使用if语句时都用花括号括起代码块,即使只有一个语句要执行。这样做可以提高可读性。

布尔转换

该if (…)语句计算括号中的表达式并将结果转换为布尔值。

让我们回忆一下类型转换一章中的转换规则:

一个数字0,一个空字符串"",null,undefined,和NaN一切变得false。因此,它们被称为“假”值。

其他值变为true,因此称为“真实”。

所以,这种情况下的代码永远不会执行:

if (0) { // 0 is falsy
  ...
}
……

在这种情况下——它总是会:

if (1) { // 1 is truthy
  ...
}

我们还可以将预先评估的布尔值传递给if,如下所示:

let cond = (year == 2021); // equality evaluates to true or false
if (cond) {
  ...
}

其他“else”

该if语句可能包含一个可选的“else”块。它在条件为假时执行。

例如:

let year = prompt('In which year was the ECMAScript-2015 specification published?', '');
if (year == 2021) {
  alert( 'You guessed it right!' );
} else {
  alert( 'How can you be so wrong?' ); // any value except 2021
}

几个条件:“else if”

有时,我们想测试一个条件的几个变体。该else if条款让我们这样做。

例如:

let year = prompt('In which year was the ECMAScript-2015 specification published?', '');
if (year < 2021) {
  alert( 'Too early...' );
} else if (year > 2021) {
  alert( 'Too late' );
} else {
  alert( 'Exactly!' );
}

在上面的代码中,JavaScript 首先检查year < 2021. 如果为假,则进入下一个条件year > 2021。如果这也是假的,它会显示最后一个alert.

可以有更多else if块。最后else是可选的。

条件运算符 '?'

有时,我们需要根据条件分配一个变量。

例如:

let accessAllowed;
let age = prompt('How old are you?', '');
if (age > 18) {
  accessAllowed = true;
} else {
  accessAllowed = false;
}
alert(accessAllowed);

所谓的“条件”或“问号”运算符让我们能够以更短更简单的方式做到这一点。

运算符由问号表示?。有时它被称为“三元”“三目运算符”,因为运算符具有三个操作数。它实际上是 JavaScript 中唯一一个拥有这么多运算符的运算符。

语法是:

let result = condition ? value1 : value2;

该condition评估:如果它为true返回value1,否则返回 value2。

例如:

let accessAllowed = (age > 18) ? true : false;

从技术上讲,我们可以省略 周围的括号age > 18。问号运算符的优先级较低,因此在比较之后执行>。

此示例将执行与上一个相同的操作:

// the comparison operator "age > 18" executes first anyway
// (no need to wrap it into parentheses)
let accessAllowed = age > 18 ? true : false;

但是括号使代码更具可读性,因此我们建议使用它们。

请注意:

在上面的示例中,您可以避免使用问号运算符,因为比较本身返回true/false:

// the same
let accessAllowed = age > 18;

多 '?' 嵌套使用

一系列问号运算符?可以返回一个取决于多个条件的值。

例如:

let age = prompt('age?', 18);
let message = (age < 3) ? 'Hi, baby!' :
  (age < 18) ? 'Hello!' :
  (age < 100) ? 'Greetings!' :
  'What an unusual age!';
alert( message );

一开始可能很难理解发生了什么。但仔细观察后,我们可以看到这只是一个普通的测试序列:

第一个问号检查是否age < 3.

如果为真 - 它返回'Hi, baby!'。否则,它将继续到冒号 '":"' 之后的表达式,检查age < 18.

如果这是真的 - 它返回'Hello!'. 否则,它将继续到下一个冒号 '":"' 之后的表达式,检查age < 100.

如果这是真的 - 它返回'Greetings!'. 否则,它将继续到最后一个冒号 '":"' 之后的表达式,返回'What an unusual age!'.

使用if..else表达是下面这个样子:

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.');

根据条件company == 'Netscape',?执行后的第一个或第二个表达式并显示警报。

此处我们不将结果分配给变量。相反,我们根据条件执行不同的代码。

不建议以这种方式使用问号运算符。

该符号比等效的if语句短,这对一些程序员很有吸引力。但它的可读性较差。

这是if用于比较的相同代码:

let company = prompt('Which company created JavaScript?', '');
if (company == 'Netscape') {
  alert('Right!');
} else {
  alert('Wrong.');
}

我们的眼睛垂直扫描代码。跨越多行的代码块比长的水平指令集更容易理解。

问号运算符的目的?是根据其条件返回一个或另一个值,这种情况下可以使用它。如果需要执行不同的代码分支的情况下使用if。

搜你所爱
JavaScript:目录
湘ICP备14001474号-3  投诉建议:234161800@qq.com   部分内容来源于网络,如有侵权,请联系删除。