运算符
var a = 1,
b = 2,
c = 3;
var d = (a + b) * c;
步骤:
- 声明变量d
- 变量a的值和变量b的值相加,与变量c的值相乘得到结果
- 将该结果赋值给变量d
'+'运算符
var c = 'str' + null;
console.log(c); //strnull
任何数据类型的值加上字符串都是字符串
var c = 1 + 1 + 'str' + (1 + 1);
console.log(c); //2str2
运算是自左向右的
++
var a = 1;
a = a + 1; // -> a += 1 -> a++
var a = 1;
console.log(a++); //1
console.log(a = a + 1); //2
console.log(++a); //2
a++是先打印后运算的 ++a是先运算后打印
var a = 5,
b;
b = a++ + 1;
console.log(b,a); //6,6
b = a++ + 1 相当于 b = 1 + a++
先是 b = 1 + a ->6
赋值完之后才会++运算
a的值由于a++不是在log语句里,所以 a++运算了之后打印出来
var a = 5,
b;
b = ++a + 1;
console.log(b,a); //7,6
var a = 5,
b;
b = a-- + --a;
console.log(b,a); //8,3
相当于 b = --a + a-- (b = 4 + 4)
--a了之后a已经变成4了
再a--,a就变成3了
var a = 5,
b;
b = --a + --a;
console.log(b,a); //7,3
--a -> a = 4
再--a -> a = 3
b = 7
var a = 5,
b;
b = --a + a++;
console.log(b,a); //8,5
--a -> 4
b = 4 + 4 = 8
a++ -> a = 5
'/'运算符
var c = 0 / 0;
console.log(c); //NaN
NaN(Not a Number)是数字类型
var c = 1 / 0;
var d = -1 / 0;
console.log(c, d); //infinity,-infinity
'%'运算符(取余)
var c = 4 / 6;
console.log(c); //4
交换值
var a = 1,
b = 2;
法1:
var c = a;
a = b;
b = c;
法2:
a = a + b; // 3
b = a - b; // 3 - 2 = 1
a = a - b; // 3 - 1 = 2
比较运算符
number和string进行比较,string要转换成number
var bool = 1 > '2';
console.log(bool); //false
字符串之间的对比是字符串相对应的ASCII码
多个字符就从左到右依次对比,直到比较出ASCII码的大小为止
var bool = '4.5' > '11';
console.log(bool); //true
首先从第一位开始比 '4' 的ASCII码比 '1' 的ASCII大,所以不用再继续比了
相等运算符
'=='是不看数据类型的 -> !=
'==='全等会看 -> !==
'='赋值运算符和'=='相等运算符是不一样的,所以在条件判断语句中,用'=='而不是'='
NaN != NaN
NaN与包括自己在内的任何东西都不相等
逗号运算符
只会返回最后一个
var num = (2 - 1, 6 + 5, 24 + 1);
console.log(num);
判断分支
逻辑运算:
&& 与 遇到真就往后走,遇到假或走到最后就返回当前值
|| 或 遇到假就往后走,遇到真或走到最后就返回当前值
逻辑运算无论如何都会返回值
var name = '';
console.log(name || '未找到数据');
相当于
if(name){
console.log(name);
}else{
console.log('未找到数据');
}
var a = 1 && 2 && undefined && 10;
var b = 0 || null || 1 || 0;
console.log(a, b); //undefined,1
!非
undefined、null、NaN、''、0、false是假的,其他都是真的
var a = !1; // 1->true
console.log(a); //false
取反:a = !a
不等:a != a
switch
定值用switch,有范围的用if
break用来终止循环
var city = window.prompt('请输入您所在的地区');
switch(city){
case '北京':
console.log('北京');
break;
case '上海':
console.log('上海');
break;
case '广东':
console.log('广东');
break;
default:
console.log('其他')
}
三目运算符
var a = 5,
str = '';
a > 0 ? str = '大于0'
: str = '小于等于0';
三目运算符可以接收结果,有return的功能
var str = a > 0 ? '大于0' //return
: '小于等于0';
嵌套
var a = 5,
str = '';
str = a > 0 ? (
a > 3 ? '大于3'
:'小于等于3'
)
: '小于等于0';
例:
var str = '';
str = 89 > 9 ? (
'89' > '9' ? '通过了'
:'内层未通过'
)
: '外层未通过';
console.log(str); //'内层未通过'
因为是字符串之间的比较,比ASCII码