JavaScript 数据类型

JavaScript 是一种弱类型脚本语言,所谓弱类型指的是定义变量时,不需要什么类型,在程序运行过程中会自动判断类型。

原始类型

ECMAScript 中定义了 6 种原始类型:

  • Boolean
  • String
  • Number
  • Null
  • Undefined
  • Symbol

如果不确定一个东西的数据类型是什么,那么可以使用 typeof 方法进行判断

使用 typeof 判断数据类型
typeof true; // "boolean"
typeof 'hi'; // "string"
typeof 123; // "number"
typeof null; // "object"
typeof undefined; // "undefined"
typeof Symbol(); // "symbol"

注意:null 的 typeof 结果为「object」是一个 Bug,null 是原始类型不是引用类型。

引用类型

除了原始类型,还有引用类型,上述提到的 typeof 识别出来的类型中,只有 object 和 function 是引用类型,其他都是值类型。

typeof new Date(); // "object"
typeof []; // "object"
typeof function(){}; // "function"

根据 JavaScript 中的变量类型传递方式,又分为值类型和引用类型,值类型变量包括 Boolean、String、Number、Undefined、Null,引用类型包括了 Object 类的所有,如 Date、Array、Function 等。在参数传递方式上,值类型是按值传递,引用类型是按共享传递。


String

字符串就是一串字符,在 JavaScript 中一般是由英文单引号或者双引号包裹组成

let str = '我是字符串存在变量里';
str = "我也可以是双引号";
str = '我想说:"你好"'; // 一句话里要有引号可以外面单引号包裹着里面双引号
str = 'I\'m Conners'; // 一些符号需要转义符如这里面的单引号用反斜号区分出来
str = '我要换个行\n在这里换了行'; // 使用 \n 进行换行
console.log(str); // 打印到控制台看看效果

注意:可以单引号包着双引号也可以双引号包着单引号,但是不能一边单一边双,也不能双引号包着双引号或单引号包着单引号。

Number

就是数字,在 JavaScript 中不区分整数型和浮点型

123; // 整数 123
0.456; // 浮点数 0.456
1.2345e3; // 科学计数法表示 1.2345x1000,等同于1234.5
-99; // 负数
NaN; // NaN表示 Not a Number,当无法计算结果时用 NaN表 示
Infinity; // Infinity 表示无限大,当数值超过了 JavaScript 的 Number 所能表示的最大值时,就表示为 Infinity

注意:被引号包住的就是 string 而不是 number 噢。

Boolean

就是布尔值,只有真(true)和假(false)两个值,主要用于选择结构的判断条件,比如判断一些事从而触发某些功能。

console.log(5 > 1); // true
console.log(3 < 1); // false

Null 和 Undefined

Null 表示空,Undefined 表示未定义。可以简单的理解为 Null 用来清空一个变量,Undefined 表示一个变量没有赋予值。

Undefined 是由 Null 衍生而来,所以

null == 0 // false
null == "" // false
null == undefined // true
null === undefined // false,因为三等是对比数据类型,他两不是一个数据类型

Array

数组是存储多种数据类型,并通过索引访问访问其中元素。

let arr = [1,"2",null,true,[1,3,5]]; // 中括号包裹,可存在多个且不同数据类型的元素包括数组
console.log(arr[1]); // "2" 通过下标访问其中元素
arr[0] = 2; // 可通过下标修改指定元素
console.log(arr); // [2, "2", null, true]

Object

JavaScript 的对象是一种无序的集合数据类型,它由花括号包裹,里面是若干键值对组成。

let obj = {
  "name":"Conners",
  "age":"24"
}

「”name”」是健名,「”Conners”」是健值。


数据类型转换

类型转换就是将一种类型转换成另一种类型,在 JavaScript 中有隐式类型转换和显式类型转换

隐式类型转换指的是自动进行的类型转换,比如字符串和数字相加时会自动将数字转换成字符串然后相加

2017 + '1080' // '20171080' 因为此处1080是字符串

显式类型转换指的是通过一些方法手动的进行类型转换

字符串转数字

使用的方法有:

  • Number()
  • parseInt()
  • parseFloat()

Number() 是将任何「数字字符串」转成数字,比如上面例子

let i = 2017 + Number('1080');
console.log(i); // 3097

但是这种方法只能转换纯数字的字符串,如果遇上如「100px」这样数字和字符结合的就不行了

Number('1080px') // NaN

「NaN」表示 Not a Number,一般用于表达这不是一个合法的数字,除了「NaN」还有用于判断是否是数字的「isNaN」

isNaN(1080); // false
isNaN('1080'); // false
isNaN('1080px'); // true

parseInt() 是将字符串中数字部分提取出整数数字的方法

parseInt('1080px1'); // 1080
parseInt('-100'); // -100
parseInt('1010.123'); // 1010
parseInt('px1080'); // NaN
  • 如果开头是字符那么返回 NaN
  • 如果中间有英文字符那么返回到英文字符前一位
  • 如果带正负数符号,保留负数符号

parseFloat() 是将字符串中数字部分提取出浮点数数字的方法

parseFloat('1010.123px'); // 1010.123

用法和 parseInt() 一样只是保留了小数

数字转字符串

可以使用 toString()

let i = 2017;
let j = i.toString() + 100;
console.log(j); // "2017100"

或者更简单点,上面说了隐式类型转换中数字和字符串相加可以自动转成字符串,那么

let i = (2017 + "") + 100; // 加上一个空的字符串
console.log(i); // "2017100"

Conners Hua

欢迎加入群聊: Telegram 群聊 | QQ 群聊(不讨论敏感话题)

您可能还喜欢...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.