一.表达式
1.由运算符和操作数(变量或常量)组成的式子
- 算术运算符组成的式子叫算术表达式
- 关系运算符组成的式子叫关系表达式或者条件表达式
- 逻辑运算符组成的式子叫做逻辑表达式
- 审视表达式分两步
- 看表达式的功能
- 看表达式的值
二.运算符
1. 分类
1.1 算术运算符(+,-, *,/,%)
字符串和变量的拼接(+)
1.2 关系运算符
<、>、<=、>=、==、===、!= !==
1.3 逻辑运算符
&& 与(且)、|| 或、! 非
1.4 赋值运算符a+=10;
+=、-=、*=、/=、%=
1.5 自增、自减
++a, a++,--a, a--
2.关系运算符

- 两个操作数都是数值,则数值比较;
- 两个操作数都是字符串,则比较两个字符串对应的字符编码值;
- 两个操作数有一个是数值,则将另一个转换为数值,再进行数值比较;
2.2. 在相等和不等的比较上,如果操作数是非数值,则遵循一下规则:
- 一个操作数是布尔值,则比较之前将其转换为数值,false 转成 0,true 转成 1;
- 一个操作数是字符串,则比较之前将其转成为数值再比较
- 一个操作数是 NaN,则==返回 false,!=返回 true;并且 NaN 和自身不等;
- 在全等和全不等的判断上,比如值和类型都相等,才返回 true,否则返回 false
3.逻辑运算符

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";
三. 优先级

四. 流程语句控制
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>