1.学习目标
了解变量的概念、定义方式、命名规范
掌握变量提升、对作用域的理解
掌握6种常用数据类型的使用
掌握算术运算符、关系运算符、逻辑运算符
掌握null、undefined的区别
掌握++i和i++的区别
掌握==和===的区别
掌握&&和||的区别
掌握三目运算符
掌握数据类型转换
2.变量
2.1变量的定义
语法:var 变量名 = 变量值;
2.2变量的命名规范
不能以数字开头
不能是关键字
见名知意
#### 2.3变量提升&作用域
var a = 10;
==> var a;
==> a = 10
作用域:
全局作用域
局部作用域
块作用域
3.js数据类型
undefined
null
number
string
boolean
symbol
3.1undefined
var没有定义值的时候输出变量就是undefined
当定义变量的值为undefined的时候,该变量的数据类型就是undefined类型
3.2null
null值表示一个空值、一个空对象
3.3number
number的值可以是负整数、0、正整数也可以是小数
3.4string
string的值可以是"" 也可以是''
3.5boolean
boolean的值只有true和false
常用做开关使用*
3.6symbol**
没多少场景
4.运算符
#### 4.1算术运算符
+ - * /
4.2自增运算符&自减运算符**
++i和i++的区别*
++i 先给i自加1,再计算表达式的值。
i++先计算表达式的值,再给i自加1
4.3关系运算符**
> < >= <= == === != !==
== 和 ===的区别*
`===` 严格相等,会比较两个值的类型和值
`==` 抽象相等,比较时,会先进行类型转换、然后再比较值
4.4逻辑运算符**
&&
结论:
只要都是true,结果就为true
只要有一个为false,结果就为false
||
结论:
只要都是false,结果就为false
只要有一个为true,结果就为true
4.5三目运算符**
max = 10 > 8 ? 'true' : 'false';
alert(max)
5.数据类型转换
- number <-> str
- 数值转字符串toString()
- 字符串转数值必须是数值字符'1024'
- number <-> boolean
- 数值转布尔值
非0即true,0即false
- 布尔值转数值都是NaN
- 数值转布尔值
- boolean <-> str
- 布尔值转字符串
"true"&"false"
- 字符串转布尔值
空串即false,非空串true
- 布尔值转字符串
//方法 string -> number parseInt(字符串)
var str = 'abc';
*console*.log(parseInt(str)); //NaN 非数字字符所以结果是NaN
*console*.log(parseInt('123'));
*console*.log(parseInt('123.a6'));
// number -> string
var num = 520;
var num_to_str = num.toString();
*console*.log(num_to_str, typeof num_to_str);
// boolean -> number
var flag = false;
var bool_to_number = parseInt(flag);
*console*.log(bool_to_number);
//number -> boolean
if (0) {
*console*.log('true');
} else {
*console*.log('false');
}
//boolean -> string
var rest = flag.toString();
*console*.log(rest,typeof rest);
//string -> boolean
var empty_str = '';
var str_not_empty = 'abc';
result = str_not_empty ? 'true' : 'false';
*console*.log(result);
超市商品抹零案例:
//计算商品总金额
var money_all = 21.89 + 23.88 + 78.67 + 56.45 + 56.89;
money_all = money_all.toFixed(2);
console.log("总金额为:",money_all);
//对总金额进行抹零处理
money_real = parseInt(money_all);
console.log('实付金额为:', money_real);
在计算多位包含小数的数值类型(number)会出现小数位过多的情况*
- 出现问题的原因:
JavaScript对小数运算会先转成二进制,运算完毕再转回十进制,过程中会有丢失,不过不是所有的小数间运算会有这个问题。
- 解决方法有两种:
-
- 先对每个小数乘以 10再除以10计算
- 使用toFixed(2)保留两位小数