运算符
数学运算符
有一套规律:
1. 任何类型的数据和字符串类型的数据做相加(+)操作时,其他数据类型会自动的转换为字符串类型。此时的相加(+)不再是数学意义上的加法,而是表示“拼接”的意思。
2. 任何数据除了和字符串做相加运算外,字符串转成数字。
与NaN做算术运算的结果始终都是NaN。包括NaN本身和NaN做运算的结果也是NaN。(字符串是数值会自动的转换为数字,否则会转换为NaN)
3. 任何其他数据除了字符串以外,与数字类型做算术运算时,其他数据会自动的转换为数字。(true会自动的转换为1 false会自动的转换为0 null会自动的转换为0 undefined会自动的转为NaN)
赋值运算符
复合赋值:
+= -= /= %= *=
var num = 10;
// num = num + 5;
num += 5; //其实上述式子的简写
console.log(num);
一元运算符
a++ 值:++后置,先对a取值,作为a++的值,然后对a进行+1操作
++a 值:++前置,先对a加1,再取a的值,作为++a的值。
功能:对a进行+1操作。
关系运算符
关系运算符(这些叫做关系运算符)
> < >= <= == != === !==
和其他运算符一样,当关系运算符操作非数值时要遵循一下规则:
1. 两个操作数都是数值,则数值比较;
2. 两个操作数都是字符串,则比较两个字符串对应的字符编码值;
<1>如果两个字符串中都是单个字符
<2>如果是多个字符,必须逐位比较,一旦比较出大小就结束比较。
3. 两个操作数有一个是数值,则将另一个转换为数值,再进行数值比较;(自动数据类型)
在相等和不等的比较上,如果操作数是非数值,则遵循一下规则:
1. 一个操作数是布尔值,则比较之前将其转换为数值,false 转成 0,true 转成 1;
2. 一个操作数是字符串,则比较之前将其转成为数值再比较
3. 一个操作数是 NaN,则==返回 false,!=返回 true;并且 NaN 和自身不等;
逻辑运算符
&&
语法:表达式1 && 表达式2
【注】这两个表达式都为true,才为true。
短路操作:当第一个表达式为false的时候,第二个表达式就不执行了。
|| 语法:表达式1 || 表达式2
【注】这两个表达式都为false,才为false。
短路操作:当第一个表达式为true的时候,第二个表达式就不执行了。
! 语法:!表达式
【注】取反
【注】非空即真,非0即真。
1.操作数是一个空字符串,返回 true;
2.操作数是一个非空字符串,返回 false;
3.操作数是数值 0,返回 true;
4.操作数是任意非 0 数值(包括 Infinity),false;
5.操作数是 NaN,返回 true;
6.操作数是 undefined,返回 true;
流程控制语句
流程控制语句:
1、顺序结构 规律:都是自上而下顺序执行的。
2、分支结构/选择结构/条件结构
3、循环结构
分支语句
分支语句
语法结构:单分支语句
if(判断条件){
判断语句;
}
语法结构:双分支语句
if(判断条件){
判断语句;
}else{
判断语句;
}
不同区间练习
通过不同的区间判断,根据不同的计算公式得出结果。
1、必须使用多分支语句
语法:
if(判断条件1){
执行语句1;
}else if(判断条件2){
执行语句2;
}else if(判断条件3){
执行语句3;
}
...
else{
如果上述的判断都不成立,那么直接执行这里。
}
*/
var x = 10;
var y = 0;
if(x < 1){
y = x;
}else if(x >= 1 && x < 10){
y = 2 * x + 1;
}else{
y = 5 * x - 17;
}
console.log("x为:" + x + ", y的值为:" + y);
switch语句(多分支语句)
注意:
1、不能省略default(容错)
2、每一条case后面都必须加break。(break作用是用于终止当前的switch语句)
【注】可以通过省略break简化代码的。
【注】if语句和switch语句如何选择:
switch更加倾向于去匹配确定的值。
var grade = "A";
switch(grade){
case "A":
console.log("80~100");
break;
case "B":
console.log("70~79");
break;
case "C":
console.log("60~69");
break;
case "D":
console.log("<60");
break;
default:
console.log("当上述所有的条件都不成立,执行default");
break;
}