Javascript基础二

146 阅读4分钟

一.表达式

1.由运算符和操作数(变量或常量)组成的式子

  • 算术运算符组成的式子叫算术表达式
  • 关系运算符组成的式子叫关系表达式或者条件表达式
  • 逻辑运算符组成的式子叫做逻辑表达式
  1. 审视表达式分两步
  • 看表达式的功能
  • 看表达式的值

二.运算符

1. 分类

1.1 算术运算符(+,-, *,/,%) 字符串和变量的拼接(+) 1.2 关系运算符 <、>、<=、>=、==、===、!= !== 1.3 逻辑运算符 && 与(且)、|| 或、! 非

1.4 赋值运算符a+=10; +=、-=、*=、/=、%= 1.5 自增、自减 ++a, a++,--a, a--

2.关系运算符

image.png
2.1. 和其他运算符一样,当关系运算符操作非数值时要遵循一下规则:

  • 两个操作数都是数值,则数值比较;
  • 两个操作数都是字符串,则比较两个字符串对应的字符编码值;
  • 两个操作数有一个是数值,则将另一个转换为数值,再进行数值比较;

2.2. 在相等和不等的比较上,如果操作数是非数值,则遵循一下规则:

  • 一个操作数是布尔值,则比较之前将其转换为数值,false 转成 0,true 转成 1;
  • 一个操作数是字符串,则比较之前将其转成为数值再比较
  • 一个操作数是 NaN,则==返回 false,!=返回 true;并且 NaN 和自身不等;
  • 在全等和全不等的判断上,比如值和类型都相等,才返回 true,否则返回 false

3.逻辑运算符

image.png
3.1 逻辑运算符通常用于布尔值的操作,一般和关系运算符配合使用,有三个逻辑运算符: 逻辑与(AND)、逻辑或(OR)、逻辑非(NOT)。 3.2 逻辑与运算符属于短路操作,顾名思义,如果第一个操作数返回是 false,第二个数不 管是 true 还是 false 都返回的 false。 和逻辑与运算符相似,逻辑或运算符也是短路操作。当第一操作数的求值结果为 true, 就不会对第二个操作数求值了。

3.3 逻辑非(NOT):! 逻辑非运算符可以用于任何值。无论这个值是什么数据类型,这个运算符都会返回一个 布尔值。它的流程是:先将这个值转换成布尔值,然后取反,规则如下: 1.操作数是一个空字符串,返回 true; 2.操作数是一个非空字符串,返回 false; 3.操作数是数值 0,返回 true; 4.操作数是任意非 0 数值(包括 Infinity),false; 5.操作数是 NaN,返回 true; 6.操作数是 undefined,返回 true;

4. 其他运算符

4.1 字符串运算符 字符串运算符只有一个,即:"+"。它的作用是将两个字符串相加。 规则:至少一个操作数是字符串即可。 4.2 逗号运算符 逗号运算符可以在一条语句中执行多个操作。 x = 82, x4 4.3 三元(目)条件运算符 var b=5; (b == 5) ? a="true" : a="false";

三. 优先级

image.png

四. 流程语句控制

1. 三大结构

  • 顺序结构 自上而下,逐行执行,先来后到,相同语句,后面的覆盖前面的
  • 选择结构 0 多条路径,根据不同条件,只执行其中的一条或选择性的执行多条
  • 循环结构 重复执行某些代码,代替某些重复性操作,减少代码冗余,提升效率

2. 语句

2.1 if判断语句 计算某一年是否是闰年、与或非的运用

if (year >= 1000 && year <= 9999 & year % 1 == 0) {
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
        alert("闰年");
    } else {
        alert("平年");
    }
}

2.2 switch语句 案例:成绩判定、显示星期几、计算器

 switch (week) {
    case 1: document.write("星期一"); break;
    case 2: document.write("星期二"); break;
    case 3: document.write("星期三"); break;
    case 4: document.write("星期四"); break;
    case 5: document.write("星期五"); break;
    case 6: document.write("星期六"); break;
    case 7: document.write("星期天"); break;
    default:
        document.write("您的输入有误");
        break;
}

<!--switch 的穿透特性-->
switch (week) { //6
    case 1: document.write("星期一<br>");
    case 2: document.write("星期二<br>");
    case 3: document.write("星期三<br>");
    case 4: document.write("星期四<br>");
    case 5: document.write("星期五<br>");
    case 6: document.write("星期六<br>");
    case 7: document.write("星期天<br>");
    default:
        document.write("您的输入有误");
        break;
}

计算器小案例

<body>
    <input type="text" id="num1">
    <select name="" id="select">
        <option value="+">加</option>
        <option value="-">减</option>
        <option value="*">乘</option>
        <option value="/">除</option>
        <option value="%">余</option>
    </select>
    <input type="text" id="num2">
    <button id="btn">计算</button>
    <input type="text" id="result">
</body>

<script>
    var num1Inp = document.getElementById("num1");
    var selectInp = document.getElementById("select");
    var num2Inp = document.getElementById("num2");
    var btn = document.getElementById("btn");
    var resultInp = document.getElementById("result");
    console.log(num1Inp, selectInp, num2Inp, btn, resultInp);

    // 下拉框取值  如果option中存在value属性  则优先取option中的value值
    //             如果option中不存在value属性  则取option标签中的内容


    btn.onclick = function () {
        // alert(1111);
        var num1 = num1Inp.value * 1;   // string   =>  number
        var opt = selectInp.value;  // string
        var num2 = num2Inp.value * 1;   // string    =>  number
        console.log(num1, opt, num2);

        var result = 0;

        // 注意 switch  中的表达式  一般是变量和常量
        switch (opt) {  //  + - * / %
            case "+": result = num1 + num2; break;
            case "-": result = num1 - num2; break;
            case "*": result = num1 * num2; break;
            case "/": result = num1 / num2; break;
            case "%": result = num1 % num2; break;
            default:
                alert("计算出错,请检查你的输入是否正确");
                break;
        }

        resultInp.value = result;
    }


</script>