JavaScript之数据类型

什么是数据

  • 生活中无时无刻都在跟数据打交道
    • 例如:人的体重、身高、收入、性别等数据等
  • 在我们使用计算机的过程中,也会接触到各种各样的数据
    • 例如: 文档数据、图片数据、视频数据等

数据分类

静态数据

  • 静态数据是指一些永久性的数据,一般存储在硬盘中。硬盘的存储空间一般都比较大,现在普通计算机的硬盘都有500G左右,因此硬盘中可以存放一些比较大的文件
  • 存储的时长:计算机关闭之后再开启,这些数据依旧还在,只要你不主动删掉或者硬盘没坏,这些数据永远都在
  • 哪些是静态数据:静态数据一般是以文件的形式存储在硬盘上,比如文档、照片、视频等。

动态数据

  • 动态数据指在程序运行过程中,动态产生的临时数据,一般存储在内存中。内存的存储空间一般都比较小,现在普通计算机的内存只有8G左右,因此要谨慎使用内存,不要占用太多的内存空间
  • 存储的时长:计算机关闭之后,这些临时数据就会被清除
  • 哪些是动态数据:当运行某个程序(软件)时,整个程序就会被加载到内存中,在程序运行过程中,会产生各种各样的临时数据,这些临时数据都是存储在内存中的。当程序停止运行或者计算机被强制关闭时,这个程序产生的所有临时数据都会被清除。
  • 既然硬盘的存储空间这么大,为何不把所有的应用程序加载到硬盘中去执行呢?主要原因就是内存的访问速度比硬盘快N倍

静态数据和动态数据的相互转换

  • 从磁盘加载到内存(静到动)
  • 从内存保存到磁盘(动到静)

数据的计量单位

  • 不管是静态还是动态数据,都是0和1组成的
  • 数据越大,包含的0和1就越多
1 B(Byte字节) = 8 bit(位)
// 00000000 就是一个字节
// 111111111 也是一个字节
// 10101010 也是一个字节
// 任意8个0和1的组合都是一个字节
1 KB(KByte) = 1024 B
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB

JavaScript数据类型

  • 为程序员我们最关心的是内存中的动态数据, 因为我们写的程序就是在内存中的
  • 程序在运行过程中会产生各种各样的临时数据, 为了方便数据的运算和操作, JavaScript也对这些数据进行了分类, 提供了丰富的数据类型
  • 在JavaScript中一共有六种数据类型

JavaScript基本数据类型

  • String 字符串类型
    在JavaScript中无论是整数还是小数都属于数值类型
  • Number 数值类型
    在JavaScript中无论是通过单引号还是双引号括起来的内容都属于字符串类型
  • Boolean 布尔值类型
    在JavaScript中布尔类型比较特殊,只有两个取值 truefalse
  • Null 空值类型
  • Undefined 未定义类型
    在JavaScrip中也比较特殊,只有一个取值 undefined

JavaScript引用类型

  • Object 对象类型

数据类型检测

在JavaScript中可以用 typeof 操作符来检测数据类型, typeof 操作符会将检查的结果以字符串的形式返回给我们

let a = 666;
console.log(typeof a);        // number
console.log(typeof 123);      // number
console.log(typeof 3.14);     // number

let b = 'abcd';
console.log(typeof b);         // string
console.log(typeof 'abc');     // string
console.log(typeof  "abc");    // string

let c = true;
console.log(typeof c);         // boolean
console.log(typeof true);      // boolean
console.log(typeof false);     // boolean

let d;
console.log(typeof d);         // undefined

JavaScript数据类型转换

转换为字符串类型

将数值类型Number转换为字符串类型

  • 通过 toString() 可以将数值类型转换为字符串类型
let value = 123;
console.log(value);  // 123
console.log(typeof value);  // number

// 将 value 中的内容拷贝一份,然后将拷贝的数据转化为字符串返回
// toString() 方法是对拷贝的数据进行转换,不会影响到原数据
let str = value.toString();
console.log(str);   // 123
console.log(typeof str); // string
  • 可以通过 String() 将数值类型转换为字符串类型
let value = 123;
console.log(value);   // 123
console.log(typeof value);   // number

let str = String(value);
console.log(str);    // 123
console.log(typeof str);     // string
  • 可以通过 变量 + ""变量 + '' 将数值类型转换为字符串类型
let value = 123;
let str1 = value + '';  // 123
let str2 = value + "";  // 123
console.log(typeof str1);  // string
console.log(typeof str2);  // string

将布尔类型Boolean转换为字符串类型

  • 通过 toString() 可以将布尔类型转换为字符串类型
let value = true;
console.log(value);  // true
console.log(typeof value);  // boolean

// 将 value 中的内容拷贝一份,然后将拷贝的数据转化为字符串返回
// toString() 方法是对拷贝的数据进行转换,不会影响到原数据
let str = value.toString();
console.log(str);   // true
console.log(typeof str); // string
  • 可以通过 String() 将布尔类型转换为字符串类型
let value = true;
console.log(value);   // true
console.log(typeof value);   // boolean

let str = String(value);
console.log(str);    // true
console.log(typeof str);     // string
  • 可以通过 变量 + ""变量 + '' 将布尔类型转换为字符串类型
let value = true;
let str1 = value + '';  // true
let str2 = value + "";  // true
console.log(typeof str1);  // string
console.log(typeof str2);  // string

将未定义undefined类型转换为字符串类型

  • 可以通过 String() 将未定义类型转换为字符串类型
let value = undefined;
console.log(value);   // undefined
console.log(typeof value);   // undefined

// 根据传入的参数重新生成一个字符串
let str = String(value);
console.log(str);    // undefined
console.log(typeof str);     // string
  • 可以通过 变量 + ""变量 + '' 将布尔类型转换为字符串类型
let value = undefined;
let str1 = value + '';  // undefined
let str2 = value + "";  // undefined
console.log(typeof str1);  // string
console.log(typeof str2);  // string

将空类型null转换为字符串类型

  • 可以通过 String() 将空类型转换为字符串类型
let value = null;
console.log(value);   // null
console.log(typeof value);   // object

let str = String(value);
console.log(str);    // null
console.log(typeof str);     // string
  • 可以通过 变量 + ""变量 + '' 将布尔类型转换为字符串类型
let value = null;
let str1 = value + '';  // null
let str2 = value + "";  // null
console.log(typeof str1);  // string
console.log(typeof str2);  // string

将常量转换为字符串类型

  • 可以通过 String() 将常量换为字符串类型
let value = String(123);
console.log(typeof value);  // string
  • 可以通过 变量 + ""变量 + '' 将数值类型转换为字符串类型
let value1 = 123 + '';
let value2 = 123 + "";
console.log(value1);    // 123
console.log(typeof value1);     // string
console.log(value2);    // 123
console.log(typeof value2);     // string

转换为数值类型

字符串转换为数值类型

  • 通过 Number() 方式来转换
 let str = '123';
console.log(str);  // 12
console.log(typeof str);  // string

let value = Number(str);
console.log(value);  // 123
console.log(typeof value);  // number

let res = Number('456');
console.log(res);  // 456
console.log(typeof res);  // number

// 如果字符串中没有数据,那么转换的几个为 0
// 如果字符串中的数据不仅仅是数值,那么转换结果是 NaN
let str1 = '  ';
let value1 = Number(str1);  // 0
console.log(typeof value1); // number

let str2 = '12px';
let value2 = Number(str2);  // NaN
console.log(typeof value2); // number
  • 通过数学运算中的加号和减号来转换
// 通过加号和减号可以将其他类型转化为数值类型,但会改变其正负性
// 加号和减号本质是调用了Number函数
let str = '123';
let value = +str;
// let value = -str;  // -123
console.log(value);  // 123
console.log(typeof value); // number
  • 通过parseInt()parseFloat() 来转换
// parseInt()和 parseFloat()都会从左至右提取数值,一旦遇到非数值就会立即停止
// 停止的时候还有没提取到数值,则返回NaN
// parseInt()和 parseFloat()都将传入的数据当做字符串处理
let str1 = '12px';
let str2 = '3.14px';
let res1 = parseInt(str1);   // 12
let res2 = parseInt(str2)    // 3
let res3 = parseFloat(str2)  // 3.14

布尔类型转换为数值类型

  • 通过 Number() 方式来转换
// 如果布尔类型 true,那么转换之后的结果是 1
// 如果布尔类型 false,那么转换之后的结果是 0
let flag = true;
let value = Number(flag);
console.log(value);   // 1
console.log(typeof value);  // number
  • 通过数学运算中的加号和减号来转换

未定义转换为数值类型

  • 通过 Number() 方式来转换
// 如果是未定义类型,那么转换之后的结果是`NaN`
let flag = unddefined;
let value = Number(flag);
console.log(value);   // NaN
console.log(typeof value);  // number
  • 通过数学运算中的加号和减号来转换

空类型转换为数值类型

  • 通过 Number() 方式来转换
// 如果是空类型,那么转换之后的结果是0
let flag = null;
let value = Number(flag);
console.log(value);   // 0
console.log(typeof value);  // number
  • 通过数学运算中的加号和减号来转换

转换为布尔类型

在JavaScript中想要将基本类型转换为布尔类型,只需调用 boolean()

  • 将字符串类型转换为布尔类型
    只要字符串中有内容都会转换为true,只有字符串中没有内容才会转换为false
let str = 'abc';
let flag = Boolean(str);
console.log(flag); // true
console.log(typeof flag); // boolean
  • 将数值类型转换为布尔类型
    只有数值是0时才会转换为false,其他都会转换为true
    NaN也会转换成false
let num = 888;
let flag = Boolean(num);
console.log(flag);  // true
console.log(typeof flag);  // boolean
  • 将未定义类型转换为布尔类型
let num = undefined;
let flag = Boolean(num);
console.log(flag);  // false
console.log(typeof flag); // boolean
  • 将空类型转换为布尔类型
let num = null;
let flag = Boolean(num);
console.log(flag);  // false
console.log(typeof flag); // boolean

基本包装类型

之所以能够访问基本数据类型的属性和方法,是因为在运行的时候系统自动将基本数据类型包装成了对象类型

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

推荐阅读更多精彩内容