JavaScript 数据类型

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接收负值的处理有错,它会返回原始字符串。

slice,substr和substring的区别

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是定义了,但值为空。

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。

汇总
1557204221883.jpg

1557204243727.jpg

数据类型转换参考链接

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,082评论 5 464
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,231评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 145,047评论 0 327
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,977评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,893评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,976评论 3 388
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,605评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,888评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,906评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,732评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,513评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,980评论 3 301
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,132评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,447评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,027评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,232评论 2 339

推荐阅读更多精彩内容