Featured image of post (三)JavaScript数据类型

(三)JavaScript数据类型

(三)数据类型

1. 数据类型概述

1.1 为什么需要数据类型

在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利用存储空间,于是定义了不同的数据类型。

简单来说,数据类型就是数据的类别型号。比如姓名“张三” ,年龄18,这些数据的类型是不一样的。

1.2 变量的数据类型

变量是用来存储值的所在处,它们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。==JavaScript是一种弱类型或者说动态语言==。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。

1
2
var age = 10;
//这是一个数字型var arerouok =的; //这是一个字符串

在代码运行时,变量的数据类型是由JS引擎根据=右边变量值的数据类型来判断的,运行完毕之后,变量就确定了数据类型 JavaScript拥有动态类型,同时也意味着相同的变量可用作不同的类型:

1
2
3
4
var x = 6;
// x为数字
var x = "Bill";
// x为字符串

2. 简单数据类型

2.1 简单数据类型(基本数据类型)

JavaScript中的简单数据类型及其说明如下:

简单数据类型 说明 默认值
Number 数字型,包含整值和浮点值,如21、0.21 0
Boolean 布尔值类型,如true、 false,等价于1和0 false
String 字符串类型,如“张三”注意js 里面,字符串都带引号 ""
Undefined var a; 声明了变量a但是没有给值,此时a =undefinedNull undefined
Null var a = null; 声明了变量a为空值 null

2.2 数字型 Number

1. 数字型进制

常见:二进制、八进制、十进制、十六进制

  • 0123: 0 开头表示八进制
  • 0b11: 0b 开头表示二进制
  • 0x11: 0x 开头表示十六进制
  • 直接打印出来会转化为十进制

2. 数字型范围

1
2
console.log(Number.MAX_VALUE);
console.log(Number.MIN_VALUE);

3. 特殊值

1
2
3
console.log(Infinity);
console.log(-Infinity);
console.log(NaN);
  • Infinity:无穷大
  • -Infinity:无穷小
  • NaN:Not a number,代表一个非数值。

4. isNaN()

isNaN 方法用来判断一个变量和或者一个值是数字类型,若不是数字类型则返回 true;否则返回 false

2.3 字符串型 String

1. 定义

字符长型可以是引号中的任意文本,其语法为双引号 "" 和单引号 ''

2. 字符串引号嵌套

JS可以用单引号嵌套双引号,或者用双引号嵌套单引号(外双内单,外单内双)

1
2
var strmsg= '我是"高帅富"程序员';
var strmsg= "我是'高帅富'程序员";

3. 字符串转义符

类似HTML里面的特殊字符,字符串中也有特殊字符,我们称之为转义符转义符都是\开头的,常用的转义符及其说明如下:

转义符 解释说明
\n 换行符, n是 newline 的意思
\\ |
\' 单引号'
\" 双引号"
\t tab 缩进
\b 空格,b 是 blank 的意思

4. 获取字符串长度 length

1
2
var str = 'hello';
console.log(str.length);

4. 字符串拼接

多个字符串之间可以使用+进行拼接,其拼接方式为 ==字符串+任何类型=拼接之后的新字符串== 拼接前会把与字符串相加的任何类型转成字符串,再拼接成一个新的字符串

5. 字符串拼接加强

将字符串和变量相加,以后要更新最终的结果字符串,只需更新变量的值。

2.4 布尔型 Boolean

  • 布尔型有两个值,truefalse
  • 布尔型(truefalse)在参与加法时当作 10 使用
1
2
3
4
console.log(true+1);
// 2
console.log(false+1);
// 1

2.5 Undefined

1
2
3
4
5
console.log(undefined+1); // NaN
console.log(undefined+NaN); // NaN
console.log(undefined+true); // NaN
console.log(undefined+'aaa'); // undefinedaaa
console.log(undefined+undefined); // NaN

2.6 空值 Null

1
2
3
4
5
6
console.log(null+1); // 1
console.log(null+undefined); // NaN
console.log(null+NaN); // NaN
console.log(null+true); // 1
console.log(null+'aaa'); // nullaaa
console.log(null+null); // 0

3. 获取变量数据类型

3.1 typeof 获取变量数据类型

typeof variabletypeof(variable)) 返回一个字符串,值为该变量的数据类型。

1
2
3
4
5
6
7
8
console.log(typeof 1); // number
console.log(typeof false); // boolean
console.log(typeof 'aaa');    // string
console.log(typeof undefined);// undefined
console.log(typeof NaN); // number
console.log(typeof Infinity); // number
console.log(typeof null); // object
console.log(typeof typeof 1); // string

3.2 字面量

字面量是在源代码中一个固定的表示法,通俗来说,就是字面量如何表达这个值。

  • 数字字面量:10
  • 字符串字面量:mphyaaa
  • 布尔字面量:truefalse

4. 数据类型转换

4.1 什么是数据类型转换

使用表单、prompt获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算,而需要转换变量的数据类型。 通俗来说,就是把一种数据类型的变量转换成另外一种数据类型 我们通常会实现3种方式的转换:

  • 转换为字符串类型
  • 转换为数字型
  • 转换为布尔型

4.2 转换成字符串的三种方法

一般用第三种方式,隐式转换。

  • toString() 方法
  • String() 方法
  • 加号 + 拼接字符串
1
2
3
4
var num = 12;
console.log(num.toString());
console.log(String(num));
console.log(num + '');

引申:数字字符长转数字

1
2
var str = '123'
console.log(str - '');

4.3 转换为数字型

方式 说明 案例
parseInt(str) 函数 string->整数型 parseInt(‘10’)
parseFloat() 函数 string->浮点型 parseFloat(‘3.14’)
Number() 强转换函数 string->数字型 Number(‘12’)
JS 隐式转换 算术运算符隐式转换为数字型 '12'- 0'12' - '''12'*1
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
console.log(parseInt('123')); // 123
console.log(parseFloat('3.14')); // 3.14
console.log('123' - 0); // 123
console.log('123' - ''); // 123
console.log(parseFloat('999')); // 999
console.log(parseInt('3.14159')); // 3
console.log(parseInt('120px')); // 120
console.log(Number('100')); // 100
console.log(Number('100.32')); // 100.32
console.log(Number('100px')); // NaN
console.log('100px' - ''); // NaN

注意:

  1. 数字字符串('12.3'12)之间进行加法运算实际上是字符串的拼接,结果还是字符串;而数字字符串之间的减法运算是算术运算,结果是数字型。
  2. 一个数字字符长和一个数字相乘,结果是算数运算结果,为数字型。
1
2
3
4
5
console.log('10' + '2'); // 102
console.log('10' - '2'); // 8
console.log('10' + '3.2'); // 103.2
console.log('10' - '3.2'); // 6.8
console.log('12'*3); // 36

4.4 转换为布尔型

使用 Boolean() 函数转换。

  • 转换值为 false'', 0, NaN, null, undefined(5个)
  • 其他的转换值均为 true
1
2
3
4
5
6
console.log(Boolean('')); // false
console.log(Boolean(0)); // false
console.log(Boolean(NaN)); // false
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
console.log(Boolean([])); // true

5. 标识符、关键字、保留字

5.1 标识符

标识(zhi)符:就是指开发人员为变量、属性、函数、参数取的名字。标识符不能是关键字或保留字。

5.2 关键字

关键字:是指JS本身已经使用了的字,不能再用它们充当变量名、方法名。

包括: break, case, catch, continue, default, delete, do, else, finally. for, function, if, in instanceof, new. return, switch, this, throw, try, typeof, var, void, while, with等。

5.3 保留字

保留字:实际上就是预留的“关键字” ,意思是现在虽然还不是关键字,但是未来可能会成为关键字,同样不能使用它们当变量名或方法名。

包括: boolean, byte, char, class, const, debugger, double, enum, export, extends fimal, float. goto, implements, import, int, interface, long, mative, package private, protected, public, short, static, super, synchronized, throws, transient volatile等。

6. 拓展:8 种基本数据类型

8 种基本数据类型中,前 7 种为基本数据类型,最后 1 种为复杂数据类型(object)。

  • number:用于任何类型的数字:整数或浮点数,在 $\pm(2^{53}-1)$ 范围内的整数。
  • bigint:用于任意长的整数。
  • string:字符串,一个字符串可以包含 0 个或多个字符,没有单独的单字符类型。
  • boolean:值为 truefalse
  • null:未知的值,只有一个 null 值的独立类型。
  • undefined:未定义得值,只有一个 undefined 值的独立类型。
  • symbol:用于唯一的标识符。
  • object:用于更复杂的数据结构。

使用 typeof 运算符查看变量的数据类型:

  • 两种形式:typeof xtypeof(x)
  • 以字符串的形式返回类型名称:例如 string
  • typeof null 会返回 "object" —— 这是 JavaScript 编程语言的一个错误,实际上它并不是一个 object
Powered by GitHub.Pages
Built with Hugo
主题 StackJimmy 设计
© Licensed Under CC BY-NC-SA 4.0