赋值运算符
赋值运算符就是把 = 右边的值赋值给左边。
举一些例子:
但是呢,有一个特别需要注意的点:
赋值运算符之间不能有空格!!
var x = 10;
var y = 20;
x += y; //正确
// 注意:赋值运算符之间不能加空格
x + = y; //错误
记住,这是错的!!
正确的写法应该是:
var x = 10;
var y = 20;
x += y; //正确
// 注意:赋值运算符之间不能加空格
x += y; //正确
比较运算符
比较运算符常用在逻辑语句中使用,以测定变量或值是否相等。
比较运算返回一个boolean类型的值,满足条件返回true, 否则返回false。
你们发现了没有,这个表格里有存在两个=,也有存在三个=的,怎么这两个还比一样的吗?
当然不一样!
==:表示两个值是一样的,不区分string类型和number类型(5==5同时5==“5”)
===:表示两个值不仅相等,他们的数据类型页数一样的(5===5,但是不满足5==="5")
同样,!=和!==也是不一样的
<script>
console.log(10 == 10); // 输出: true
console.log(10 == 11); // 输出: false
console.log(10 == "10"); // 输出: true
console.log(10 ==="10"); // 输出: false
</script>
逻辑运算符
- 逻辑与(&&) 表示“而且”的意思,属于短路运算。 首先,当值为Boolean类型时: 判断第一个参数, 如果第一个参数为true, 则直接返回第二个数。
<script>
console.log(true && true); // 输出: true
console.log(true && false); // 输出: false
</script>
()里的数就是参数
在这里第一个参数为true,那么不管第二个参数是什么,直接输出第二个参数
如果第一个参数为false,则直接返回第一个数
<script>
console.log(false && true); // 输出: false
console.log(false && false); // 输出: false
</script>
当值为非Boolean类型时:
先判断第一个数, 如果第一个数为true, 则返回第二个数;
如果第一个参数为flase, 则直接返回第一个数。
注意: 值是否为true或false,是根据数值的隐式boolean转换而来的。
<script>
var str = "hello" && "world"; // 输出: "world"
var str = 0 && 2; // 输出: 0
var str = "haha" && 4; // 输出: 4
var str = "" && "hello"; // 输出: ""
var str = undefined && "name"; // 输出: undefined
var str = "name" && undefined; // 输出: undefined
var str = "name" && NaN; // 输出: NaN
</script>
- 逻辑或(||)表示“或者”的意思,属于短路运算。
当值为Boolean类型时:
判断第一个参数, 如果第一个参数为true,则直接返回第一个数
判断第一个参数, 如果第一个参数为false,则直接返回第二个数
<script>
console.log(true || true); // 输出: true
console.log(true || false); // 输出: true
console.log(false || true); // 输出: true
console.log(false || false); // 输出: false
</script>
总结: 逻辑或对于布尔值,只要有一个为true, 就返回true
当值为非Boolean类型时:
先判断第一个数,
如果第一个数为true, 则返回第一个数;
如果第一个参数为flase, 则直接返回第二个数。
注意: 值是否为true或false,是根据数值的隐式boolean转换而来的。
<script>
var str = "hello" || "world"; // 输出: "hello"
var str = null || undefined; // 输出: undefined
var str = 0 || 2; // 输出: 2
var str = "haha" || 4; // 输出: "haha"
var str = "" || "hello"; // 输出: "hello"
var str = "name" || undefined; // 输出: "name"
var str = "name" || NaN; // 输出: "name"
</script>
- 逻辑非(!) 表示取反的意思
当值为Boolean类型时:
<script>
console.log(!true); // 输出: false
console.log(!false); // 输出: true
</script>
当值为非Boolean类型时:
<script>
console.log(!true); // 输出: false
console.log(!false); // 输出: true
console.log(!"哈哈"); // 输出: false
console.log(!{}); // 输出: false
console.log(!3); // 输出: false
console.log(!""); // 输出: true
console.log(!0); // 输出: true
console.log(!null); // 输出: true
console.log(!undefined); // 输出: true
console.log(!NaN); // 输出: true
</script>
它的值只有两个,要么是true,要么是false
- 三目运算
三目运算语法:
条件表达式 ? 满足条件执行 : 不满足条件执行
就例如:
找出两个数中的最大值
<script>
var max = a > b ? a : b; //条件表达式为a>b 满足条件(a>b)时输出a 不满足条件(a<b)时输出b
console.log("max: " + max);
// 或者这样
var value = a > b ? "最大值为: " + a : "最大值为: " + b;
console.log(value);
</script>
总结:记住语法很重要!
- 操作符优先级