zoukankan      html  css  js  c++  java
  • JavaScript 基础知识 2

        #条件分支:if 和 '?'
    有时我们需要根据不同条件执行不同的操作。

    我们可以使用 if 语句和条件运算符 ?(也称为“问号”运算符)来实现。

    “if” 语句
    if(...) 语句计算括号里的条件表达式,如果计算结果是 true,就会执行对应的代码块。
    例如:
    let year = prompt('In which year was ECMAScript-2015 specification published?', '');
    if (year == 2015) {
    alert( 'You are right!' );
    }
    建议每次使用 if 语句都用大括号 {} 来包装代码块,即使只有一条语句。这样可以提高代码可读性。

    布尔转换
    if (…) 语句会计算圆括号内的表达式,并将计算结果转换为布尔型。

    让我们回顾一下 类型转换 一章中的转换规则:
    数字 0、空字符串 ""、null、undefined 和 NaN 都会被转换成 false。因为它们被称为“假值(falsy)”值。
    其他值被转换为 true,所以它们被称为“真值(truthy)”。
    “假值(falsy)”条件下的代码永远不会执行:

    “else” 语句
    if 语句有时会包含一个可选的 “else” 块。如果判断条件不成立,就会执行它内部的代码。

    例如:
    let year = prompt('In which year was ECMAScript-2015 specification published?', '');

    if (year == 2015) {
    alert( 'You guessed it right!' );
    } else {
    alert( 'How can you be so wrong?' ); // 2015 以外的任何值
    }

    多个条件:“else if”
    有时我们需要测试一个条件的几个变体。我们可以通过使用 else if 子句实现。

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

    可以有更多的 else if 块。结尾的 else 是可选的。

    条件运算符 ‘?’
    有时我们需要根据一个条件去赋值一个变量。
    这个运算符通过问号 ? 表示。有时它被称为三元运算符,被称为“三元”是因为该运算符中有三个操作数。实际上它是 JavaScript 中唯一一个有这么多操作数的运算符。

    语法:
    let result = condition ? value1 : value2;
    计算条件结果,如果结果为真,则返回 value1,否则返回 value2

    例如:
    let accessAllowed = (age > 18) ? true : false;
    技术上讲,我们可以省略 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!'。

        #逻辑运算符
    JavaScript 中有三个逻辑运算符:||(或),&&(与),!(非)。

    虽然它们被称为“逻辑”运算符,但这些运算符却可以被应用于任意类型的值,而不仅仅是布尔值。它们的结果也同样可以是任意类型。

    ||(或)
    两个竖线符号表示“或”运算符:
    result = a || b;

    操作数是布尔值的时候
    除了两个操作数都是 false 的情况,结果都是 true。(一个为false,则结果为false)

    如果操作数不是布尔值,那么它将会被转化为布尔值来参与运算。
    例如,数字 1 被作为 true 处理,数字 0 则被作为 false:

    大多数情况下,逻辑或 || 会被用在 if 语句中,用来测试是否有 任何 给定的条件为 true。
    例如:
    let hour = 9;
    if (hour < 10 || hour > 18) {
    alert( 'The office is closed.' );
    }

    或运算寻找第一个真值
    给定多个参与或运算的值:
    result = value1 || value2 || value3;

    或运算符 || 做了如下的事情:
    从左到右依次计算操作数。
    处理每一个操作数时,都将其转化为布尔值。如果结果是 true,就停止计算,返回这个操作数的初始值。
    如果所有的操作数都被计算过(也就是,转换结果都是 false),则返回最后一个操作数
    返回的值是操作数的初始形式,不会做布尔转换。

    换句话说,一个或运算 || 的链,将返回第一个真值,如果不存在真值,就返回该链的最后一个值。
    例如:
    alert( 1 || 0 ); // 1(1 是真值)
    alert( null || 1 ); // 1(1 是第一个真值)
    alert( null || 0 || 1 ); // 1(第一个真值)
    alert( undefined || null || 0 ); // 0(都是假值,返回最后一个值)

    与“纯粹的、传统的、仅仅处理布尔值的或运算”相比,这个规则就引起了一些很有趣的用法。
    1 获取变量列表或者表达式中的第一个真值。
    例如,我们有变量 firstName、lastName 和 nickName,都是可选的(即可以是 undefined,也可以是假值)。
    我们用或运算 || 来选择有数据的那一个,并显示出来(如果没有设置,则用 "Anonymous"):

    let firstName = "";
    let lastName = "";
    let nickName = "SuperCoder";
    alert( firstName || lastName || nickName || "Anonymous"); // SuperCoder
    如果所有变量的值都为假,结果就是 "Anonymous"。

    2 短路求值(Short-circuit evaluation)。
    这指的是,|| 对其参数进行处理,直到达到第一个真值,然后立即返回该值,而无需处理其他参数。
    在下面这个例子中,只会打印第二条信息:
    true || alert("not printed");
    false || alert("printed");
    在第一行中,或运算符 || 在遇到 true 时立即停止运算,所以 alert 没有运行。

    #&&(与)
    两个 & 符号表示 && 与运算符:
    result = a && b;
    在传统的编程中,当两个操作数都是真值时,与运算返回 true,否则返回 false:

    与运算寻找第一个假值
    给出多个参加与运算的值:
    result = value1 && value2 && value3;

    与运算 && 做了如下的事:
    从左到右依次计算操作数。
    处理每一个操作数时,都将其转化为布尔值。如果结果是 false,就停止计算,并返回这个操作数的初始值。
    如果所有的操作数都被计算过(例如都是真值),则返回最后一个操作数。
    换句话说,与运算返回第一个假值,如果没有假值就返回最后一个值
    上面的规则和或运算很像。区别就是与运算返回第一个假值,而或运算返回第一个真值。

    与运算 && 在或运算 || 之前进行
    与运算 && 的优先级比或运算 || 要高。
    所以代码 a && b || c && d 跟 && 表达式加了括号完全一样:(a && b) || (c && d)。

    !(非)
    感叹符号 ! 表示布尔非运算符。
    语法相当简单:
    result = !value;
    逻辑非运算符接受一个参数,并按如下运作:
    1 将操作数转化为布尔类型:true/false。
    2 返回相反的值。

    两个非运算 !! 有时候用来将某个值转化为布尔类型:
    alert( !!"non-empty string" ); // true
    alert( !!null ); // false

    非运算符 ! 的优先级在所有逻辑运算符里面最高,所以它总是在 && 和 || 之前执行。

  • 相关阅读:
    显示当前时间和全班学生成绩求和
    js做计算器
    javascript学习内容--改变样式、取消设置、显示内容、隐藏内容
    javascript学习内容--object.style.display="value" value值为“”none“隐藏”或 "block"显示
    元素示例
    Python网页爬虫(一)
    macbook Android开发环境搭建,真机调试
    Shell 脚本编程笔记(一) Hello Shell
    嵌入式开发(一) Ubuntu12.04下搭建交叉编译环境
    算法学习(二) 全排列问题的非递归算法——模拟堆栈
  • 原文地址:https://www.cnblogs.com/perfectdata/p/15389022.html
Copyright © 2011-2022 走看看