JavaScript——数据类型
基本数据类型
String(字符串类型)
字符串型是JavaScript中用来表示文本的数据类型,是由Unicode字符、数字和标点符号组成的一个字符串序列。
字符串通常是由单引号或是双引号括起来的。
1.单引号和双引号均可解析转义字符
2.单引号和双引号均不能解析变量
3.变量与字符串、变量与变量要使用+来连接。
4.单引号和双引号可以互相嵌套,如果单引号中要嵌套单引号,需要将单引号转义,同理,双引号相同
Number(数值类型)
最基本的数值字面量格式是十进制整数:
除了以十进制表示外,整数还可以通过八进制或十六进制的字面值来表示:
var num = 070; //八进制数,以0开头
var num = 0xA; //十六进制数,以0x开头
注意:虽然数值可以用八进制或十六进制来表示,但在进行算术计算时,所有以八进制和十六进制表示的数值都将转换成十进制数值。
浮点类型
1.所谓的浮点数值就是,该数值中必须包含一个小数点。并且小数点后面必须至少一位数字。
2.如果小数点后面没有跟任何数字,可以作为整数值来保存。
3.如果浮点数值本身代表的就是一个整数(如1.0)会被转为整数。
Boolean类型
布尔类型的字面值只有两个,true和false,可以使用Boolean()函数将一个非布尔类型转换为布尔类型。
注意:true和false是严格区分大小写的
数据类型 | 转换为true | 转换为false |
---|---|---|
布尔型 | true | false |
字符串 | 任何非空字符串 | “”空字符串 |
数值 | 任何非零数值 | 0和NaN |
对像 | 任何对象 | null |
类型转换
数值转换
我们可以使用三个函数Number()、parseInt()和parseFloat()将一个非数值转换为数值。
Number()函数的转换规则
1.如果是布尔值,true和false将分别转换为1和0
2.如果是数字值,只是简单的传入和返回
3.如果是null,返回0
4.如果undefined,返回NaN
5.如果是字符串,遵循下列规则:
a.“11”会变成11
b.“1.1”会变成1.1
c.“0xf”会变成相同大小的十进制整数值
d. 如果字符串是空的,则将其转换为0
e. 如果字符串包含除上述格式之外的字符,则将其转换成NaN
parseInt()的转换规则:
1.忽略字符串前面的空格,直到找到第一个非空格字符
2.如果第一个字符不是数字或者是负号,返回NaN
3.空字符串,返回NaN
4.如果第一个字符是数字,会继续解析第二个字符,直到解析完所有后续字符或遇到了一个非数字字符。
5.如果字符串以0x开头且后面跟数字字符,就会将其转为10进制数,同样,八进制也一样。
parseFloat()的转换规则:
也是从第一个字符开始解析每个字符,而且也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止。
1.第一个小数点是有效的,第二个小数点无效
2.始终忽略前面的0,不分进制数
3.十六进制会被转换成0
4.空字符串转换为NaN
复合数据类型
对象
对象其实就是一些数据的集合,这些数据可以是字符串型、数字型和布尔型,也可以是复合型。
对象的创建
1.使用构造函数创建内置对象
var myObject = new Object();
myObject.name = “tina”;
myObject.age = 20;
myObject.say = function(){}
2.直接创建自定义对象
var 对象名 = {属性名1:属性值,属性名2:属性值2,…….}
3.使用自定义构造函数创建对象
function pen(name,color,price){
//对象的name属性
this.name = name;
//对象的color属性
this.color = color;
//对象的piece属性
this.price = price;
//对象的draw方法
this.draw = function(){};
}
布尔对象
创建布尔对象与转换布尔值 布尔对象的属性 : constructor(返回对创建此对象的Boolean函数的引用) 使用“new Boolean()”构造函数将参数转换成一个布尔值,并创建一个布尔对象,而使用“Boolean()”转变函数只是将一个值转换成布尔类型的数据。
a.如果参数为0、null、NaN、false、空字符串或undefined,都将转为false
b.除了以上的情况之外,全部转为true,包括字符串“false”
日期对象
日期对象可以使用系统内置的构造函数来创建日期对象:
new Date()
new Date(年,月,日,时,分,秒)
日期对象同样有constructor属性
日期对象方法:
getFullYear() | 返回年份,4位数,建议使用 |
---|---|
getMonth() | 返回月份,其值范围为0~11 |
getDate() | 返回日期对象中的一个月中的第几天 |
getDay() | 返回星期中的某一天,0~6 |
getHours() | 返回日期对象中的小时部分 |
getMinutes() | 返回日期对象中的分钟部分 |
getSeconds() | 返回日期对象中的秒钟部分 |
getMilliseconds() | 返回日期对象中的毫秒部分 |
getTime() | 返回日期对象中的时间戳的毫秒数 |
getTimezoneOffset() | 返回日期对象中的时区的时差数,单位是分 |
数学对象
数学对象主要作用是为数学计算提供常量和计算函数。
数学对象的属性:
Math.E | 自然对数的底数(e) |
---|---|
Math.LN10 | oge10 |
Math.LN2 | loge2 |
Math.LOG10E | log10e |
Math.LOG2E | log2e |
Math.PI | 3.1415926 |
Math.SQRT1_2 | 2的平方根的倒数 |
Math.SQRT2 | 2的平方根 |
Math.abs() | 绝对值 |
Math.ceil() | 进一取整 |
Math.floor() | 退一取整 |
Math.max(num1,num2….) | /取最大值 |
Math.min() | 取最小值 |
Math.pow(x,y) | 返回x的y次幂 |
Math.random() | 0.0~1.0之间的随机数,包括0不包括1 |
Math.round() | 四舍五入 Math.sqrt(): //平方根 |
字符串对象
创建字符串对象
var str = new String(“abcdefg”);
var str = “abcdefg”;
字符串对象的方法:
indexOf(“abc”) | 返回子字符串abc在字符串中第一次出现的位置 |
---|---|
lastIndexOf(“abc”) | 返回子字符串abc在字符串中最后一次出现位置 |
match(regexp) | 找到一个或多个正则表达式的匹配 |
replace(表达式,替换的字符串) | 替换一个与正则表达式相匹配的子串 |
search(regexp) | 查找与正则表达式相匹配的子字符串 |
split(正则表达式,数组最大长度) | 用于把一个字符串分割成字符串的数组 |
slice(startindex,endindex) | 返回一个子字符串 |
substr(startindex,length) | 返回一个子字符串 |
substring(startindex,endindex) | 返回一个子字符串 |
toLowerCase() | 将字符串转换为小写 |
toUpperCase() | 将字符串转换为大写 |
charAt(0) | 返回指定索引字符 |
字符串对象拥有的属性:
length //字符串的长度
数组
数组与对象一样,也是一些数据的集合,这些数据也可以是字符串型、数字型、布尔型、或者是复合型。与对象不同,数组中的数据并没有命名,不能通过名字来引用该数据。在数组中,为每个数据都编了一个号(从0开始),为数组的下标。
1.创建数组的方式一[ ]
var arr = [' 1 ' ,' 2 ' , ' 3 ' , ' 4 ' ];
2.创建数组的方式二:构造函数的方式
var name ='zhang';
var age = 23;
var sex = girl;
var arr = new Array[name,age,sex];
注意:在数组中的数据没有设置名字的话,区分他们的数组的索引。索引从数组的长度决定的数组中有几条数据(数组的索引从0开始的),索引最大值=数组长度-1。
数组的方法
数组元素的个数 | array.length |
---|---|
对创建此对象的数组函数的引用 | array.constructor |
toString() | 将数组转换为字符串 |
join() | 将数组元素连接成字符串 |
push() | 在数组尾部添加元素并返回一个新的长度 |
concat() | 添加元素并生成新数组 |
unshift() | 在数组头部添加元素并返回一个新长度 |
pop() | 删除最后一个元素并返回删除的元素 |
shift() | 删除第一个元素并返回一个删除的元素 |
splice() | 删除、替换或插入数组元素 |
slice() | 返回数组中的一部分 |
reverse() | 颠倒数组中的元素 |
sort() | 将数组元素排序 |
数组对象中的方法-sort()
['Google', 'Apple', 'Microsoft'].sort();
['Google', 'apple', 'Microsoft'].sort();
[10, 20, 1, 2].sort(); Sort()
方法默认按照ASCII码排序 j解析凡是;按照数组中数据先转化为字符串,然后再转化为ASCI 码值然后再进行比较.(重点:原理);
解决办法:
1.数字排序 sort(function (x, y) { if (x < y) { return -1; } if (x > y) { return 1; } return 0; })
2.字母排序 sort(function (s1, s2) { x1 = s1.toUpperCase(); x2 = s2.toUpperCase(); if (x1 < x2) { return -1; } if (x1 > x2) { return 1; } return 0; })
3汉字排序. sort(function(a,b){return a.localeCompare(b)})
改变数组中数据
1.将数组中已有的数据的值进行改变,找到需要改变的数据的索引,以赋值的形式进行改变。
var arr = [1,2,3,4,5]
arr[1] = 'zhang';
2.to String()将JS中其他的数据类型转化为字符串类型。
console.log(arr.toString()) //输出的方式
3.join()将数组元素链接成数组元素
console.log(arr.join())
其它数据类型
1.函数
函数是一段可执行的JavaScript代码,在JavaScript中,函数可以带有0个或多个参数,也可以返回一个值或不返回值。
2.null
null是一个特殊的数据类型,其所代表的意思是“空”。需要注意,这个空并不代表是0或空字符串。null代表没有值,不是一个有效的数字、字符串、也不是数组、对象和函数,什么数据类型都不是。
3.undefined
undefined也是一个特殊的数据类型,只有定义了一个变量但没有为该变量赋值,使用了一个并未定义的变量、或者是使用了一个不存在的对象的属性时,JavaScript会返回undefined。
undefined与null的区别:
Undefined类型只有一个值,即undefined。当声明的变量还未被初始化时,变量的默认值为undefined。 Null类型也只有一个值,即null。null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。