问题:
有一篮苹果,两个两个的拿剩一个,三个三个的拿剩一个,四个四个的拿剩一个,五个五个的拿剩一个,六个六个的拿剩一个,七个七个的拿,能拿完,请问这篮子里有多少个苹果?
(一) if else 语句 demo1
// 条件为true, 执行if后面的括号代码, 否则执行 else 后面括号代码
if(条件) {
// todo
}else{
// todo
}
// 多重判断
if(){
} else if() {
} else {
}
<script>
var count = -10;
if (count>0) {
console.log(count);
} else {
console.log('count 小于或等于 0');
}
var sex = prompt();
if (sex === '男') {
alert('这是个男人');
} else if(sex === '女') {
alert('这是个女人');
} else {
alert('从泰国回来的');
}
</script>
1. 隐式转换 demo2-1
运算的过程中, 类型自动进行转换, 称之为隐式类型转换
<script>
// 类型转换
var a = 2;
var b = 3;
if (a+b) {
console.log('a+b的值大于0');
} else {
console.log('a+b的值小于或等于0');
}
</script>
2. 显式转换-其他类型转布尔类型 demo2-2
- 转换方法 Boolean(变量名) 和 !!变量名
- 转换结果为 true 或者 false
- 字符串转布尔
- 数字转布尔
- undefined 转布尔
- null 转布尔
- 对象转布尔
<script>
var a = 5;
var boo1 = Boolean(a);
console.log(boo1);
var boo2 = !!a;
console.log(boo2);
console.log('字符串转布尔-------');
var str1 = 'asdfasdf';
var str2 = '';
var str3 = ' ';
console.log(!!str1); // true
console.log(!!str2); // false
console.log(!!str3); // true
console.log('数字转布尔------');
var num1 = 2323;
var num2 = 0.8;
var num3 = 0;
var num4 = NaN;
console.log(!!num1); // true
console.log(!!num2); // true
console.log(!!num3); // false
console.log(!!num4); // false
console.log('undefined转布尔------');
var x;
console.log(!!x);
</script>
总结:
- 转换方法 Boolean(变量)或者 !!变量
- 意思上若包含'无','空'的时候转为false,其他为true
- 对象全部为true
3. 显式转换-其他类型转数字类型 demo2-3
```javascript<script>
// 其他类型转数字类型
console.log('字符串转数字');
var str1 = 'asdfasdf';
var str2 = '';
var str3 = ' ';
var str4 = '666';
console.log(Number(str1)); // NaN
console.log(Number(str2)); // 0
console.log(Number(str3));
console.log(Number(str4)); // 666
console.log('布尔类型转数组----=');
var boo1 = true;
var boo2 = false;
console.log(Number(boo1)); // 1
console.log(Number(boo2)); // 0
console.log(boo1+boo2); // 1
console.log('undefined转数字-----');
var y = undefined;
console.log(Number(y));
console.log('null转数字-----');
var z = null;
console.log(Number(z));
console.log('对象转数字-----');
var obj = {a:2, b:3}
console.log(Number(obj)); // NaN
</script>
- 转换方法 Number(变量);
- 转换结果: 数字, 0, NaN
- 字符串转数字
- 布尔转数字
- undefined 转数字
- null 转数字
- 对象转数字
总结: (1)数字的转换结果有三种: 数字, 0 , NaN (2)其他类型转数字类型的时候, 就拿这三种结果区推断, 会是那一个
<a name="oxna8"></a>
#### 4. 显式转换-其他数据类型转字符串类型 demo2-4
```javascript
<script>
var num = 100;
var obj = {a:2,b:3};
var boo = true;
console.log(num+'');
console.log(String(obj));
console.log(boo.toString());
</script>
(1)有三种方式
var num = 20;
- num + ''; // 常用
- String(num);
- num.toString();
(2)转换规则: 把变量直接添加双引号,变成字符串
(三) 算术运算
加减乘除 + - * / %
demo3-1
<script>
// 算术运算符
var a = 5;
var b = 3;
console.log(a+b); // 8
console.log(a-b); // 2
console.log(a*b); // 15
console.log(a/b); // 1.66666
console.log(a%b); // 2
</script>
2. 两个变量相加规则
(1)两个数字相加,直接相加
(2)有一个加数是字符串时,其它变量都转换成字符串,然后进行拼接 demo3-2.1
<script>
var a = 100;
var str = 'hu';
var b = '5';
console.log(a+str); // 100hu
console.log(b + null); // 5null
console.log(a+null); // 100
console.log(a+NaN); // NaN
var c;
console.log(a+c); // NaN
</script>
(3)NaN,null,undefined + 数字
(4)两个小数相加,有可能出现很多小数 demo3-2.2
<script>
var a = 0.1;
var b = 0.2;
console.log((a*10+b*10)/10);
</script>
3. 两个小数相减规则
(四) 关系运算符(比较运算符)
1. == 等于
2. === 恒等于,全等于
3. == 和 === 的区别
- == 不同类型的变量进行比较, 不比较变量类型, 类型转换后, 只比较值, 值相等, 则为true, 否则为false
- === 先比较类型, 若类型不同,结果为false, 若类型相同,再比较值, 值相同, 则为true
4. 建议尽量使用 ===
<script>
var count1 = 100;
var count2 = '100';
// 只比较值是否相等
console.log(count1 == count2);
// 1.先比较类型, 若类型不同,结果为false, 若类型相同,再比较值, 值相同, 则为true
console.log(count1 === count2);
</script>
(五) 逻辑运算符
1. 逻辑非!, 取反即可
<script>
var boo1 = true;
console.log(!boo1); // false
var boo2 = false;
console.log(!boo2); // true
var count = 100;
console.log(!count); // false
var aa = NaN;
console.log(!aa); // true;
var str = 'asdfsadfsad';
console.log(!str); // false
console.log(!!str); // true
</script>
2. 逻辑与&&: 中文里并且的意思
(1)对于布尔类型: 两者为true,结果为true demo5-2.1
<script>
var boo1 = true;
var boo2 = false;
var boo3 = true;
var boo4 = false;
console.log(boo1 && boo3); // 两者为true,结果为true, 其他情况皆为false
console.log(boo1 && boo2);
console.log(boo1 && boo4);
console.log(boo2 && boo3);
console.log(boo2 && boo4);
console.log(boo3 && boo4);
</script>
(2)对于其他类型: 前者为true取后者,前者为false取前者 demo5-2.2
<script>
var count1 = 0;
var count2 = 200;
var count3 = 100;
console.log(count1 && count2); // false
console.log(count2 && count3); // true
// 逻辑与的妙用
var obj = null;
// console.log(obj.a);
obj && obj.a;
</script>
(3)逻辑与的妙用:
var obj = null;
console.log(obj.a); // 报错
console.log(obj && obj.a); // 防止报错
3. 逻辑或|| : 中文里的或者的意思 demo5-2.3
<script>
var boo1 = true;
var boo2 = false;
var boo3 = true;
var boo4 = false;
console.log(boo1 || boo3); // true
console.log(boo1 || boo2); // true
console.log(boo1 || boo4); //true
console.log(boo2 || boo3); //true
console.log(boo2 || boo4); //false
console.log(boo3 || boo4); // true
</script>
<script>
var num1 = 100;
var str = '';
var aa = null;
var obj = {};
console.log(num1 || str); // 100
console.log(obj || num1); // obj
console.log(aa || str);
</script>
(1)对于布尔类型: 一个为true,结果为true
(2)对于其他类型:前者为true取前者, 前者为false取后者
4. 总结: 逻辑与&& 和 逻辑或 ||, 只需要记住两句话
逻辑与: 前者为true取后者,前者为false取前者
逻辑或: 前者为true取前者, 前者为false取后者
资料1: 逻辑运算符练习
1. var num1 = 0;
!num1; // true
2. var num2 = 100;
!num2; // false
!!num2; // true
3. var num3 = NaN;
!num3; // true
4. var str1 = '';
!str1; // true
5. var str2 = 'abc';
!str2; // false
10. 0 && 100; // 0
11. 0 && NaN; // 0
12. 100 && 0; // 0
13. 100 && NaN; // NaN
14. NaN && 0; // NaN
15. NaN && 100; // NaN
16. '' && 'abc'; // ''
17. 'abc' && ''; // ''
18. 'abc' && '456'; // '456'
19. true && true; // true
20. true && false; // false
21. false && true; // false
22. false && false; // false
23. 0 && undefined; // 0
24. NaN && null; // NaN
25. 100 && 'abc'; 'abc'
资料2: 逻辑运算符练习2
6. var boo1 = true;
!boo1; // false
7. var boo2 = false;
!boo2; // true
8. var name;
!name; // true
9. var cat = null;
!cat; // true
var obj;
27. 'abc' && obj.name; // 报错
28. undefined && obj.name; // undefined
29. obj && obj.name; // undefined
30. 0 || 100; // 100
31. 0 || NaN; // NaN
32. 100 || 0; // 100
33. 100 || NaN; // 100
34. NaN || 0; // 0
35. NaN || 100; // 100
36. '' || 'abc'; // 'abc'
37. 'abc' || ''; // 'abc'
38. 'abc' || '456'; // 'abc'
39. true || true; // true
40. true || false; // true
41. false || true; // true
42. false || false; // false
43. 0 || undefined; // undefined
44. NaN || null; // null
45. 100 || 'abc'; // 100
46. 'abc' || undefined // 'abc'
47. var obj; 'abc' || obj.name; // 'abc'
48. undefined || obj.name; // 报错
资料3: 编程题练习
编程题, 运算并打印结果
有一篮苹果,两个两个的拿剩一个,三个三个的拿剩一个,四个四个的拿剩一个
,五个五个的拿剩一个,六个六个的拿剩一个,七个七个的拿,能拿完,请问这篮子里有多少个苹果?
资料4: 作业
编程题:
有以下两个变量 num1 和 num2,若两个变量相加等于 15.3,则输出'运算正确',否则输出'运算错误'
var num1 = 7.1;
var num2 = 8.2;
编程题, 运算并打印结果
有一篮苹果,两个两个的拿剩一个,三个三个的拿剩一个,四个四个的拿剩一个,五个五个的拿剩一个,六个六个的拿剩一个,七个七个的拿,能拿完,请问这篮子里有多少个苹果?写出下面式子的值
typeof 100
typeof true
typeof(undefined) )
typeof({})
typeof( [1,2] )
typeof(NaN)
typeof(null)
编程题: 多重判断
作业要求: 在屏幕输入一个数字,确定后弹出相应的年龄段年龄划分:
“0-6岁为婴幼儿;
7-12岁为少儿;
13-17岁为青少年;
18-45岁为青壮年;
46-69岁为中年;
69岁以上为老年
写出下面式子的值 ```javascript ‘1.23’ == 1.23 0 == false null == undefined NaN == NaN 1 == ‘1’
1 === ‘1’
1 + ‘2’ === ‘1’ + 2
1 + true === false + 2 1 + null == undefined + 1 ‘a’ - ‘b’ == ‘b’ - ‘a’ false 4 == ‘4.00’ 4 === ‘4.00’ 0 == false
0 == null null == false
加减作业题
var score = 50;
var grade = ‘7’;
score + 10;
score + ‘10’;
score + null;
score + undefined;
score + NaN;
score + 10;
score + ‘10’;
score + null;
var num1 = 8;
var num2 = ‘8’;
num1 - num2;
num1 - ‘web01’;
num1 - null;
num1 - undefined;
num1 - true;
num1 - false;
num1 - num2;
```