16 自增
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset = "utf-8">
<script type="text/javascript">
/*
自增:++
通过自增可以使变量在自身的基础上增加1
对于一个变量自增后,原变量的值会立即自增1
自增分为两种:后++(a++)和前++(++a)
无论是a++,还是++a,都会立即使原变量的值自增1
不同的是a++和++a的值不同
a++ = 变量原值(自增前的值)
++a = 变量新值(自增后的值)
自减:--
通过自减可以使变量在自身的基础上减少1
自减分为两种:后--(a--)和前--(--a)
无论是a--,还是--a,都会立即使原变量的值自减1
不同的是a--和--a的值不同
a-- = 变量原值(自减前的值)
--a = 变量新值(自减后的值)
*/
var a = 1;
// 使a自增1
// a++;
console.log(a++); // 1
console.log("a = " + a); // a = 2
console.log(++a); // 2
var c = 10;
c++;
console.log(c++); // 11
var d = 20;
console.log(++d); // 21
console.log(++d); // 22
var result = d++ + ++d + d; // 20 + 22[21 + 1] + 22
console.log(result); // 64
d = d++; // e = d++ = 20,d = e = 20
console.log(d); // 20
var num = 10;
// num--;
// console.log(num); // 9
// --num;
console.log(num--); // 10
console.log(--num); // 9
</script>
<style>
</style>
</head>
<body>
</body>
</html>
17 自增练习
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset = "utf-8">
<script type="text/javascript">
var n1 = 10, n2 = 20;
var n = n1++; // n1 = 11, n = n1++ = 10
console.log("n = " + n); // n = 10
console.log("n1 = " + n1); // n1 = 11
n = ++n1; // n1 = 12, n = 12
console.log("n = " + n); // n = 12
console.log("n1 = " + n1); // n1 = 12
n = n2--; // n2 = 19, n = n2-- = 20
console.log("n = " + n); // n = 20
console.log("n2 = " + n2); // n2 = 19
n = --n2; // n2 = 18, n = 18
console.log("n = " + n); // n = 18
console.log("n2 = " + n2); // n2 = 18
</script>
<style>
</style>
</head>
<body>
</body>
</html>
18 逻辑运算符(1)
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset = "utf-8">
<script type="text/javascript">
/*
JS中为我们提供了三种逻辑运算符
1. !非:!可以用来对一个值进行非运算
(1) true变false,false变true
(2) 如果对一个值进行两次取反,值不变
(3) 如果对非布尔值进行运算,则会将其转换为布尔值,然后再取反,所以
我们可以利用该特点,将其他的数据类型转换为布尔值。
可以为一个任意数据类型去两次反,来将其转换为布尔值(隐式类型转换)
原理和Boolean()函数一样
2. &&与:&&可以对符号两侧的值进行与运算并返回结果
(1) 两个值中只要有一个值为false就返回false
只有两个值都为true时,才返回true
(2) JS中的“与”属于短路的与,如果第一个值为false,则不会看第二个值了
3. ||或:||可以对符号两侧的值进行或运算并返回结果
(1) 两个值中只要有一个值为true就返回true
如果两个值都为false,才返回false
(2) JS中的“或”属于短路的或,如果第一个值为true,则不会看第二个值了
*/
var a = true;
console.log("a = " + a); // a = true
// 对a进行!运算
a = !a; // a = false
var b = 10;
console.log(b);
console.log(typeof b); // number
b = !b; // false, boolean类型
// 如果两个值都是true则返回true
var res = true && true;
// 只要就一个false就返回false
res = true && false; // false
res = false && true; // false
res = false && false; // false
// 第一个值为true,会检查第二个值
true && alert("看我出不出来"); // 有弹窗
// 第一个值为false,不会检查第二个值
false && alert("看我出不出来"); // 无弹窗
// 两个都是false,则返回false
res = false || false; // false
// 只要有一个true,就返回true
res = true || false; // true
res = false || true; // true
res = true || true; // true
// 第一个值为false,会检查第二个值
false || alert("123"); // 有弹窗
// 第一个值为true,不会检查第二个值
true || alert("123"); // 无弹窗
</script>
<style>
</style>
</head>
<body>
</body>
</html>
19 逻辑运算符(2)
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset = "utf-8">
<script type="text/javascript">
/*
&& || 非布尔值的情况
对于非布尔值进行与或运算时,会先将其转换为布尔值,然后再运算
1. 与运算:如果第一个值为true,则必然返回第二个值
如果第一个值为false,则直接返回第一个值
2. 或运算:
如果第一个值为true,则返回第一个值
如果第一个值为false,则返回第二个值
*/
// true && true
// 与运算:如果两个值都为true,返回后边的值
var res = 1 && 2; // 2
res = 2 && 1; // 1
// 如果两个值中有false,则返回靠前的false
// false && true
res = 0 && 2; // 0
res = 2 && 0; // 0
// false && false
res = NaN && 0; // NaN
res = 0 && NaN; // 0
// true || true
// 如果第一个值为true,直接返回第一个值
res = 1 || 2; // 1
res = 2 || 1; // 2
// 如果第一个值为false,则直接返回第二个值
res = NaN || 1; // 1
res = "" || "hello"; // "hello"
res = -1 || "hello"; // -1
</script>
<style>
</style>
</head>
<body>
</body>
</html>
20 赋值运算符
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset = "utf-8">
<script type="text/javascript">
/*
=:可以将符号右侧的值赋值给符号左侧的变量
+=:a += 5等价于a = a + 5
-=
*=
/=
%=
*/
var a = 10;
a = a + 5;
a += 5;
console.log(a); // 15
</script>
<style>
</style>
</head>
<body>
</body>
</html>