var a = 1,
b = 2,
d = 3;
var c = (a + b) * d;
console.log(c); // 9
运算过程如下:
(1)声明变量c
(2)变量a的值和变量b的值相加,再与变量d的值相乘得到结果
(3)将该结果赋值给变量c
总结:
(1)程序从左至右执行
(2)括号运算 > 普通运算 > 赋值运算
// 数学运算:相加
console.log(1 + 2); // 3
// 对象先转字符串再字符串拼接
console.log(1 + {}); // 1[object Object]
//字符串拼接:任何数据类型的值 + 字符串都是字符串
console.log(1 + 'str'); // 1str
console.log('str' + 1); // str1
console.log('str' + 'str'); // strstr
console.log('str' + undefined); // strundefined
console.log('str' + true); // strtrue
console.log('str' + NaN); // strNaN
console.log('str' + 1 + 1); //str11
console.log('str' + (1 + 1)); // str2
console.log(1 + 1 + 'str' + (1 + 1)); // 2str2
//布尔值转化数字后做加法
console.log(true + true); // 2
// null转化为0后做加法
console.log(2 + null); // 2
// undefined转为NaN后做加法
console.log(2 + undefined); //NaN
console.log(10 / 2); // 5
console.log(1 / 2); // 0.5
console.log(0 / 0); // NaN
console.log('a' / 'b'); // NaN
console.log(NaN / NaN); // NaN
console.log(1 / NaN); // NaN
console.log(1 / 0); // Infinity
console.log(-1 / 0); // -Infinity
console.log(5 % 2); // 1
console.log(4 % 6); // 4
console.log(0 % 6); // 0
交换值问题
var a = 1;
b = 2;
// 方法一
var c = a;
a = b;
b = c;
console.log(a, b); // 2 1
// 方法二
a = a + b; // a = 3
b = a - b; // 3 - 2 = 1
a = a - b; // 3 - 1 = 2
console.log(a, b);
var a = 1;
console.log(a++); // 1
console.log(a); // 2
console.log(++a); // 3
var a = 1;
console.log(a = a + 1); // 2
var a = 5;
console.log(a--); // 5
console.log(a); // 4
console.log(--a); // 3
var b;
var a = 5,
b = a++ +1; // => b = 1 + a++;
console.log(a, b); // 6 6
var a = 5,
b = ++a +1;
console.log(a, b); // 6 7
var a = 5,
b = a-- + --a; // => --a + a--;
console.log(a, b); // 3 8
var a = 5,
b = --a + --a;
console.log(a, b); // 3 7
var a = 5,
b = --a + a++;
console.log(a, b); // 5 8
// >、<、>=、<=、==、===、!=、!===
// number - number
console.log(1 > 2); // false
// number - string string-> number
console.log(1 > '2'); // false
/*
* 字符串对比-字符串相对应的ASCII码(字符相对应的十进制代码)多个字符的,
* 从左到右依次对比,直到比较出ASCII码的大小为止
*/
console.log("a" > "b"); // false
console.log("4.5" > "11"); // true
console.log("1.5" > "11"); // false
// 相等是不看数据类型
console.log(1 == 1); // true
console.log(1 == "1"); // true
console.log(1 != 1); // false
console.log(1 != "1"); // false
// 全等是需要看数据类型是否相等
console.log(1 ==="1"); // false
console.log(1 !=="1"); // true
// NaN与包括自己在内的任何东西都不相等
console.log(NaN == NaN); // false
JS中为假情况:undefined、null、NaN、””、0、 false,除此以外全部是真
(1)与&&
// 遇到真就往后走,遇到假或走到最后就返回当前值
console.log(1 && 2); // 2
console.log(1 && 2 && undefined && 10); // undefined
总结:
表达式 | 返回值 | 真或假 |
---|---|---|
1 && 1 | 返回1 | 真 |
0 && 1 | 返回0 | 假 |
1 && 0 | 返回0 | 假 |
0 && 0 | 返回0 | 假 |
(2)或||
// 遇到假就往后走,遇到真或者走到最后就返回当前值
console.log(1 || 2); // 1
console.log(0 || null || 1 || 0); // 1
总结:
表达式 | 返回值 | 真或假 |
---|---|---|
1 或 1 | 返回1 | 真 |
0 或 1 | 返回1 | 真 |
1 或 0 | 返回1 | 真 |
0 或 0 | 返回0 | 假 |
示例
var name = '';
console.log(name || '未找到数据');
a.onclick = function(e) {
var event = e || window.event;
}
(3)非 !
console.log(!1); // 1 true 》 !1 false
console.log(!!1); true
// 逗号运算:返回最后一个
var num = (2 - 1, 6 + 5, 24 + 1);
console.log(num); // 25