JavaScript的数据类型分为两类:原始类型和对象类型。
- 原始类型包括:数字、字符串、布尔值、null、undefined。
- 除了原始类型之外的都是对象。对象是属性的集合,每个属性都由“名/值对”构成,普通对象、其中有个特殊属性:全局对象、数组、函数
3.1数字
3.11整型直接量
以十进制和十六进制为主
0xff //15*16+15=255(十进制)
3.12 浮点型直接量
3.13
6.03e23 //6.03*10的23次方
3.13 JavaScript中的算术运算
除了基本的+、-、*、/ 加减乘除运算,还有一些复杂的运算,可以通过Math对象的属性定义函数和常量来实现
Math.pow(2.53)//2的53次幂
Math.round(.6)//四舍五入 ==1
Math.max(x,y,z)//返回最大值
Math.PI//圆周率
- 上溢
- 下溢
- 被0整除,返回正无穷大或负无穷大
- 0除以0 结果为非数字,用NAN表示,NAN和任何值都不相等包括自身
3.14 二进制浮点数和四舍五入错误
浮点数表示法是一种二进制表示法,可以精确表示1/2,1/8,1/1024这样的分数,却不能精确表示0.1这样的简单数字,我们常用的分数都是十进制1/10,1/100,1/1000等。因此,对精度要求较高的金融计算,需要使用整数“分”,不要使用小数“元”。
3.15 日期和时间
JavaScript语言核心包含Date()构造函数,用来创建表示日期的对象
3.2文本
JavaScript中字符串是一组由16位值组成的不可变的有序序列,每个字符通常来自于Unicode字符集。字符串的索引从零开始,第一个字符的位置是0,第二个字符的位置是1。
3.2.1字符串直接量
在JavaScript程序中的字符串直接量,是由单引号或双引号括起来的字符序列。由单引号界定的字符串中可以包含双引号。
3.2.2 转义字符
\n \\换行符
\f \\换页符
3.2.3 字符串的使用
字符串拼接可以用+实现
msg ="Hello,"+"world"; //生成字符串"Hello,world"
字符串还提供了许多可以调用的方法
var s = "hello,world" //定义一个字符串
s.charAt(0) //得到第一个字符"h"
s.length //得到s的长度
s.split(",") //按照,分割成子串
字符串也可以当作只读数组,可以使用方括号来访问字符串的单个字符
s[0] //"h"
s[s.length-1] //"d"
3.2.4 模式匹配
JavaScript定义了RegExp()构造函数,是一种具有实用API的特殊对象,用来创建表示文本匹配模式的对象。这些模式称为“正则表达式”。RegExp对象定义了利用正则表达式进行模式匹配和查找与替换的函数。
3.3布尔值
布尔值的保留字true和false。
布尔值包含toString()方法,因此可以使用这个方法将字符串转换为true或者false
另外还有三个重要的布尔值运算符,&&逻辑与,||逻辑或,!逻辑非
if(a==4) /a==4比较结果的布尔值就是true或者false
3.4 null和undefined
3.5 全局对象
可以使用this来引用全局变量
3.6 包装对象
var s = "test";
s.len = 4;
var t = s.len;
上面代码运行结果 t为undefined,原因是第二行创建的是临时对象,使用完随即销毁。在取字符串和布尔值的时候,临时创建的对象叫包装对象。
3.7 不可变的原始值和可变的对象引用
原始值:undefined、null、布尔值、数字、字符串
对象:数组和函数
3.8 类型转换
原始值到对象的转换可以通过调用:String(),Number(),Boolean()。
3.8.1 转换和相等性
== 比较时做了类型转换,===恒等未做类型转换
null == undefined //两个值被认为相等
“0” == 0 //转换前将字符串转换为数字
0 == false //比较前将布尔值转换为数字
3.8.2 显式类型转换
可以通过显式类型转换实现变量的类型转换
Number("3") // =>3
String(false) // => "false"或使用false.toString()
Object(3) // => new Number(3)
var n=17
binary_string = n.toString(2) //转换为“10001”二进制数
3.8.3 对象转换为原始值
日期类(Date Class)定义的toString方法返回一个可读的日期和时间的字符串,例如
new Date(2020,0,1).toString() //=> "Fri Jan 01 2020 00:00:00 GMT-0800(PST)"
另一个转换对象函数是valueOf(),他可以默认将转换对象转换为原始值,例如
var d = new Date(2010,0,1); //2010年1月1日(太平洋时间)
d.valueOf() //=> 12622332800000
以上,通过toString()和valueOf()就可以实现数字和字符串,字符串和数字之间的转换了。
字符串中 "+" 可以数学加法和字符串连接操作