一、变量
(相当于给一个数据取一个名字,通过名字来访问该数据)
语法:var 变量名 = 值 (es5)
var num; //定义一个变量
num=100; //给变量赋值
var num=100; //定义变量同时赋值
也可以:var a,b,c;再赋值 或者 var a=1,b=2,c=3;
注意:JS严格区分大小写
二、变量的命名规则和命名规范
规则:(必须遵守,否则报错)
1、变量名称可由数字、字母、英文下划线、美元符号组成
2、严格区分大小写
3、不能由数字开头
4、不能是保留字或关键字
5、不能出现空格
规范:(建议遵守,不遵守不会报错)
1、变量名尽量有意义
2、遵守驼峰命名规则
3、不要使用中文作变量名
三、数据类型
数据类型通常分为两大类:基本数据类型和复杂数据类型
基本数据类型:Number、String、Boolean、Undefined、Null
1:Number:10、1.5(浮点数)、2e3(科学计数法:e3表示e的三次方,2e3即2000)、二进制(0b)、八进制(0)、十进制、十六进制(0x)(无论写的时候是几进制,计算机输出表示会转为十进制)
Number.MIN_VALUE表示大于0的最小值
Number.MAX_VALUE表示数字的最大值,如果超过这个数值,则会返回一个infinity,表示正无穷。
用typeof检查infinity也会返回number
NaN是一个数字,表示Not A Number,但NaN类型仍是一个number
2:String:单引号或双引号包着
3:Boolean:true或false,用于逻辑判断
4:undefined:声明了但是没有赋值(强行赋值为undefined也一样),一般情况是当前不知道该值是什么类型,保留到以后用到时赋值(若知道是一个对象可以赋值为null)
5、Null:null,空值,null专门用来表示一个为空的对象,用typeof检查null会返回object
复杂数据类型:对象类型(描述一个物体的特征)
检测数据类型:利用 typeof 关键字
四、强制类型转换
1、其他类型转换为String类型
(1)调用 toString() 方法
( 调用xxx的yyy()方法就是xxx.yyy())
该方法不会影响到原来变量,方法执行有结果,会将转换的结果返回
若想直接修改原变量,则将返回的结果赋值给原变量
注意:null和undefined这两个没有 toString()方法,若调用会报错
(2)调用String()方法,并将被转换的数据作为参数传递给函数
对于Number和Boolean实际上就是调用toString()方法
而对于null和undefined,不会调用toString()方法,它会将null直接转换为“null”,将undefined直接转换为“undefined”
2、其他类型转换为Number类型
(1)使用Number()函数:
- 字符串-->数字:
1、纯数字的字符串,直接转换为数字
2、字符串中有非数字,非数字的内容转换为NaN
3、字符串为一个空串或一个全是空格的字符串则转换为0
- 布尔-->数字:
1、true-->1
2、false-->0
- null --> 数字0
- undefined --> 数字NaN
(2)该方式专门用来转字符串为数字
- parseInt() 把一个字符串中的整数部分提取出来
- parseFloat() 把一个字符串中的Number提取出来
注意:对于非String类型的数据,使用这两个函数需要将数据转换为String类型再进行转换
3、其他类型转换为布尔类型
使用Boolean() 函数:
- 数字-->布尔
除0和NaN之外其余都是true
- 字符串-->布尔
除了空串其余都是true
-null和undefined都会转换为false
五、数据作运算
1、当对非Number类型的值进行运算时,会将这些值转化为Number后再作运算;
任何值和NaN做运算结果都是NaN;
2、如果对两个字符串进行加法运算,则会将两个字符串拼接成一个字符串并返回;
3、任何值和字符串做加法运算,都会先转换为字符串,然后再和字符串做拼接操作;
4、隐式类型转换,实际上也调用了String()函数:
注意:除了加法和字符串相加的情况,其余都是转换Number(任何值做- * /运算都会自动转换为Number),可以利用这一特点做隐式的类型转换,可以通过为一个值-0 *1 /1来将其转换为Number