JavaScript数据类型由以下几种:String、Number、Boolean、Array、Object、Null、Undefined。
String(字符串)
String 对象用于处理文本(字符串)。
String的属性
length字符串的长度
String的方法
charAt() 返回在指定位置的字符。
charCodeAt() 返回在指定的位置的字符的 Unicode 编码。
concat() 连接字符串。
indexOf() 检索字符串。
lastIndexOf() 从后向前搜索字符串。
replace(old,new)替换与正则表达式匹配的子串。
toLowerCase() 把字符串转换为小写。
toUpperCase() 把字符串转换为大写。
toString() 返回字符串。
split(str) 把字符串分割为字符串数组。
var aa = "ab.cd.ef"; console.log(aa.split(".")); //["ab", "cd", "ef"]
slice(start,end) 提取字符串的片断,并在新的字符串中返回被提取的部分。
var aa="abcdef"; console.log(aa.slice(2,5)); // cde
substr(start,length) 从起始索引号提取字符串中指定数目的字符。
var aa="abcdef";console.log(aa.substr(2,3)); // cde
substring(start,stop) 提取字符串中两个指定的索引号之间的字符。
var aa="abcdef";console.log(aa.substring(2,5)); // cde
slice,substr和substring的区别:
slice和substring接收的是起始位置和结束位置(不包括结束位置),而substr接收的则是起始位置和所要返回的字符串长度。
substring是以两个参数中较小一个作为起始位置,较大的参数作为结束位置。
当接收的参数是负数时,
slice会将它字符串的长度与对应的负数相加,结果作为参数;
substr则仅仅是将第一个参数与字符串长度相加后的结果作为第一个参数;
substring则干脆将负参数都直接转换为0。
// 测试代码如下:
var test = 'hello world';
alert(test.slice(-3)); //rld
alert(test.substring(-3)); //hello world
alert(test.substr(-3)); //rld
alert(test.slice(3,-4)); //lo w
alert(test.substring(3,-4)); //hel
alert(test.substr(3,-4)); //空字符串
注意:IE对substr接收负值的处理有错,它会返回原始字符串。
Number
Number 对象是原始数值的包装对象。
Number的属性
MAX_VALUE 可表示的最大的数。
MIN_VALUE 可表示的最小的数。
NaN 非数字值。
NEGATIVE_INFINITY 负无穷大,溢出时返回该值。
POSITIVE_INFINITY 正无穷大,溢出时返回该值。
Number的方法
toString() 把数字转换为字符串,使用指定的基数。
toFixed(num) 把数字转换为字符串,结果的小数点后有指定位数的数字。
Boolean
Boolean 对象表示两个值:"true" 或 "false"。
Boolean的方法
toString() 把逻辑值转换为字符串,并返回结果。
Array
Array 对象用于在单个的变量中存储多个值。
Array的属性
length 设置或返回数组中元素的数目。
Array的方法
toString() 把数组转换为字符串,并返回结果。
concat() 连接两个或更多的数组,并返回结果。
var aa = ["11","22","33"]; var bb =["aa","bb"]; // ["11", "22", "33", "aa", "bb"]
join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔,默认“,”。
var aa = ["11","22","33"]; console.log(aa.join("&")) // 11&22&33
pop() 删除并返回数组的最后一个元素 。
push() 向数组的末尾添加一个或更多元素,并返回新的长度 。
reverse() 颠倒数组中元素的顺序。
sort()对数组的元素进行排序 。
slice(start,end) 从某个已有的数组返回选定的元素 。
var aa = ["11","22","33","44","55"]; console.log(aa.slice(1,3)) // [ "22", "33"]
splice(index, howmany,item1, ..., itemX) 在index的位置删除howmany个元素,然后在index的位置添加新元素item1, ..., itemX。
var aa = ["11","22","33","44","55"]; console.log(aa.splice(1,2,"aa","bb")); console.log(aa); // [ "22", "33"] // ["11", "aa", "bb", "44", "55"]
shift() 删除并返回数组的第一个元素 。
unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
Null与Undefined
两者都表示 “没有”的概念,但数据类型不同。
Undefined是未定义;Null是定义了,但值为空。
数据类型转换
数据类型检测
typeof 是一个运算符,用于检测数据的类型,比如基本数据类型null、undefined、string、number、boolean,以及引用数据类型object、Array 、function。
var a = "hello";
console.log(typeof a) // string
var b = 2;
console.log(typeof b) // number
var c = true;
console.log(typeof c) // boolean
var d = ["aa","22"];
console.log(typeof d) // object
var e = {a1:"1"}
console.log(typeof e) // object
console.log(typeof null) // object Null指的是对象指针为空,所以typeof结果为object
console.log(typeof undefined) // undefined
显式类型转换
String 转 Number
// 全局方法 Number() 可以将字符串转换为数字。
Number("3.14") // 返回 3.14
Number(" ") // 返回 0
Number("") // 返回 0
Number("99 88") // 返回 NaN
// 如果字符串中含有其它字符在转换成Number类型的时候全部为NaN
console.log(Number("123a")); // NaN
console.log(Number("123+456")); // NaN
// parseFloat() 解析一个字符串,并返回一个浮点数。
// parseInt() 解析一个字符串,并返回一个整数。
var aa = "22q";
console.log(parseInt(aa)) // 22
// parseInt,parseFloat 只能将字符串转成Number类型
console.log(parseInt("")); // NaN
console.log(parseInt(" ")); // NaN
Boolean 转 Number
// 全局方法 Number() 可将布尔值转换为数字。
Number(false) // 返回 0
Number(true) // 返回 1
其它类型 转 Number
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN
Number 转 String
// 方法一:String(x) // 将变量 x 转换为字符串并返回
String(123) // "123"将数字 123 转换为字符串并返回
String(100 + 23) // "123" 将数字表达式转换为字符串并返回
// 方法二:x.toString()
(123).toString() // "123"
(100 + 23).toString() // "123"
Boolean 转 String
//全局方法 String() 可以将布尔值转换为字符串。
String(false) // 返回 "false"
String(true) // 返回 "true"
//Boolean 方法 toString() 也有相同的效果。
false.toString() // 返回 "false"
true.toString() // 返回 "true"
隐式类型转换
console.log(123+2+"1"); // 1251
console.log("1"+2+123); // 12123
console.log(null == null); // true
console.log(null === null); // true;
console.log(null == NaN); // false;
console.log(null == 0); // false;
console.log(null == false); // false;
console.log(null == " "); // false;
console.log(false == " "); // true;
console.log(false == 0); // true;
console.log(null == undefined); // true
console.log(undefined == null); // true
console.log(undefined == undefined); // true
console.log(undefined === undefined); // true
console.log(undefined == NaN); // false
console.log(NaN == NaN); // false
console.log(isNaN(NaN)); // true
凡是与NaN有关的操作,返回值都是NaN;
NaN跟谁都不相等;
isNaN()确实参数是否“不是数值”,如果是“不是数值”,则为true。