计算机程序的运行需要对值进行操作,能够表示并操作的值的类型叫做数据类型(type),能支持多种数据类型是编程语言最基本的特性.变量(variable)是一个值的符号名称,可以通过名称来获得值的引用
JavaScript的数据类型分为两类:
-
原始类型: 数字、字符串和布尔值
-
对象类型: 对象(object)是属性(property)的集合,每个属性都由键值对组成
此外还有两个特殊的原始值: null和undefined,它们代表了各自特殊类型的唯一成员
还有两个特殊的对象: 数组(表示带编号的值的有序集合),函数(具有与它相关联的可执行代码的对象,通过调用函数来执行代码)
如果函数用new来新建一个对象,那我们称之为构造函数.每个构造函数定义了一类(class)对象--由构造函数初始化的对象组成的集合,而类除了函数类(Function)和数组类(Array)外,还有日期类(Date)、正则类(RegExp)和错误类(Error).
JavaScript同样可分为可变类型和不可变类型,可变类型是可以修改的,对象和数组属于可变类型,数字,布尔值,null和undefined属于不可变类型
数字
与其他编程语言不同的是,JavaScript不分整数值和浮点值,JavaScript中的所有数字均用浮点值表示
JavaScript程序是使用语言本身提供的算术运算符来进行数字运算,包括加法运算符+,剑法运算符-,乘法运算符*,除法运算符/,和求余运算符%
除了基本运算,JavaScript还通过Math对象的属性定义的函数来实现更加复杂的操作
Math.pow(2,53) //2的53次幂
Math.round(.6) //四舍五入 1
Math.ceil(.6) //向上求整 1.0
Math.floor(.6) //向下求整 0.0
Math.abs(-5) //求绝对值 5
Math.max(x,y,z) //取最大值
Math.min(x,y,z) //取最小值
Math.random() //0到1.0的随机数
Math.PI //Π
Math.E //e
Math.sqrt(3) //3的平方根
Math.pow(3,1/3) //3的立方根
Math.sin(0) //三角函数
Math.log(10) //10的自然对数
Math.log(100)/Math.LN10 //以10为底100的对数
Math.log(512)/Math.LN2 //以2为底512的对数
Math.exp(3) //e的三次幂
此外,JavaScript的算术运算在溢出,下溢,或被零整除不会报错
溢出的表示结果超过了数字上限,结果为无穷大(infinity),下溢是当结果无限接近零且比JavaScript能表示的最小值还小,结果为0
当JavaScript使用实数时,通常只是真实值的一个近似表示,因为JavaScript采用的时IEEE-754浮点表示法,能精确表示分数,但却不能表示0.1这样的数字如0.2-0.1=0.099999999998
数字直接量
当一个数字直接出现在JavaScript程序中,我们称之为数字直接量
数字直接量分为:
- 整数型直接量
- 浮点型直接量(6.02e23 // 6.02*10^23)
文本
字符串(string)是一组由16位值组成的不可变的有序序列,每个字符来自unicode字符集
字符串的使用
在JavaScript中的字符串直接量,通常由单引号或者双引号括起来,单可以包双,双也可以包单,换行用 或者每行后面加
JavaScript的内置功能之一就是字符串连接,用加号将两个字符串连接,获取字符串的长度则用str.length
除了length属性,还有很多可调用的方法
var s = 'hello,world'
s.charAt(0) //第一个字符
s.charAt(s.lenght - 1) //获取最后一个字符
s.substring(1,4) //获取第2到4个字符
s.slice(1,4) /同上
s.slice(-3) //最后三个字符
s.indexOf('1') //1首次出现的位置
s.lastIndexOf('1') //1最后出现的位置
s.indexOf('1',3) //在位置3后首次出现1的位置
s.split(',') //分割成字符串
s.replace('h','H') //将h替换成H
s.toUpperCase() //全部变成大写
字符串都是固定不变的,使用各种方法返回的是新字符串,原字符串没有改变
布尔值
布尔值指代真或假,开或关,是或否.这个类型只有两个值,保留字true和false
if(a==4)
b = b + 1
else
a = a + 1
//当a=4时 b加一,否则a加一
任意JavaScript的值都可以换成布尔值,
如 undefined,null,0,-0,'//空字符串',NaN都会转换成false,其他的全部转换成true
此外还有&&,||和!三个运算符,这里不做赘述
null和undefined
null是JavaScript的关键字,它表示一个特殊值,常用来描述空值.对null进行typeof运算返回字符串'object',说明null可以认为是一个特殊的对象,含义是非对象.
undefined也表示值的空缺,用未定义的值来表示更深层次的空值,表面变量没有初始化,如果查询属性返回undefined,则说明这个属性或元素不存在,如果函数没有返回任何值,也返回undefined
且 undefined == null 是为true的,undefined === null则为false