JavaScript运算符
算术运算符
算术运算符:+、-、*、/、%(取模)
ps:注意浮点数的精度问题
//0.30000000000000004
var result = 0.1 +0.2;
递增递减运算符
前置递增/递减运算符
前置运算符是先加减再用。
var a = 10;
// 运算完后b = 13,a = 11
var b = ++a + 2;
后置递增/递减运算符
后置运算符是先用再加减。
var a = 10;
// 运算完后b = 12,a = 11
var b = a++ + 2;
比较运算符
比较运算符会返回boolean值,>,<,>=,<=在使用时也会自动转型。
运算符 | 说明 |
---|---|
== | 判断是否相等(会自动转型) |
!= | 判断是否不等(会自动转型) |
=== !== | 全等 要求值和数据类型都为一致 |
var a = 10;
//true
console.log(a == '10');
//false
console.log(a === '10');
逻辑运算符
逻辑与:&& ,等式两边都为true才返回true
ps:逻辑运算符在进行运算时,若运算符两边都为boolean则返回的也为boolean,若两边的为准确值则返回其中一边的值。
逻辑与的短路运算:
语法:表达式1 && 表达式2
- 表达式1为真则不短路,到表达式2,最后返回表达式2的值
- 表达式1为假则短路,表达式2不执行,直接返回表达式1
var num = 1;
// a = 0, num = 1;
var a = 0 && num ++;
//'' (如果有空的或者否定的为假 其余是真的 0 '' null undefined NaN)
console.log('' && 1 + 2 && 456 * 56789);
逻辑或:||,等式两边都为false才为false
逻辑或的短路运算:
语法:表达式1 ||表达式2
- 表达式1为true则短路,表达式2不执行,最后返回表达式1的值
- 表达式2为false则不短路,表达式2执行,最后返回表达式2的值
var num = 1;
// a = 1, num = 2;
var a = 0 || num ++;
逻辑非:!,结果取反就行。
赋值运算符
赋值运算符包括:= 、 += 、 -= 、 *= 、 /= 、 %=。
运算符优先级
优先级 | 运算符 | 顺序 |
---|---|---|
1 | 括号 | () |
2 | 一元运算符 | ++ – ! |
3 | 算术运算符 | * / % + - |
4 | 关系运算符 | > >= < <= |
5 | 相等运算符 | == != === !== |
6 | 逻辑运算符 | && |
7 | 赋值运算符 | = |
8 | 逗号运算符 | , |
ps:在逻辑运算符中&&比||优先级高。
流程控制
流程控制主要有三种结构,分别是顺序结构、分支结构和循环结构。
顺序流程控制
顺序流程控制按照代码先后顺序依次执行。
分支流程控制
if语句
- 简单的if语句
var a = 2;
if(a = 2){
a++;
}
//运行结果a=3
- if else语句
var a = 2;
if(a = 3){
a = 4;
}else{
a = 5;
//运行结果a=5
- if else if语句
var a = 2;
if(a = 3){
a++;
}else if(a = 2){
a = 5;
}else{
a = 6;
}
//运行结果a=5
三元表达式
语法:表达式1 ?表达式2 : 表达式3;
顺序:若表达式1的值为true则返回表达式2的值,否则返回表达式3的值。
var a = 1
// b = 2
var b = a > 2 ? a : a+1;
switch语句
switch和case的值在比较时是全等!类型和值都要相同!
var age = '18';
switch(age){
case '17':
age = 0;
break;
case '18':
age = 1;
break;
default:
age = 2;
}
//运行结果age = 1
循环流程控制
for循环
for循环的语法:
for(初始化变量; 条件表达式; 操作表达式 ){
//循环体语句
}
var a = 1;
for(var i = 1 ; i <=10 ; i++){
a++;
}
for循环的嵌套
外层for循环每执行一次,内层执行全部次数。
经典例子:倒三角(外层控制行数,内存控制一行有几个)
注意i,j的关系
var num = parseInt(prompt("请输入行列的数量"));
var star = "";
for (var i = 1; i <=num; i++) {
for (var j = i; j <= num; j++) {
star += "★";
}
//打印完换行
star += "\n";
}
console.log(star);
while循环
while(条件表达式){
//循环体代码
}
为了避免死循环一定要注意退出条件
比如:
var a = 1;
while(a<4){
console.log('hello');
//为了控制循环次数避免死循环,要使得a自增
a++;
}
do while 循环
do while是while的变式,该循环会先执行一次循环体在判断while条件。
do{
//循环体
}while(条件表达式);
continue break
- continue用于跳出本次循环,直接进行下一次循环。
- break用于立即跳出最内层循环。(如果没有循环的嵌套就立即结束整个循环)