JavaScript数据类型 | 青训营笔记

76 阅读5分钟

3.4 数据类型

八种数据类型:Number、String、Boolean、Undefined、Null、Object、BigInt、Symbol。

Object称为引用类型或复杂类型,其余七种为基本数据类型(原始类型)

JavaScript是“动态类型”的编程语言。其变量在前一刻是一种数据类型,下一刻该变量可以赋值为另一种数据类型。例如,一个变量可以在前一刻是个字符串,下一刻就存储一个数字。

3.4.1 typeof操作符

  • 作用:用来确定变量的数据类型
  • 使用方法:typeof 变量名typeof(表达式)

使用typeof操作符会返回下列字符串之一:

返回值含义
undefined表示值未定义
boolean表示值为布尔值
string表示值为字符串
number表示值为数值
object表示值为对象(而不是函数)或者null
function表示值为函数
symbol表示值为符号

3.4.2 Number类型

  1. 表示整数和浮点数。

数字表示的范围:

  • 最小正数值:Number.MIN_VALUE,这个值为5e-324,小于这个的数字会被转化为0
  • 最大正数值:Number.MAX_VALUE,这个值为1.7976931348623157e+308
  1. 除了常规的数字,还包括所谓的“特殊数值”也属于Number类型:
  • Infinity:代表数学概念中的无穷大,也可以表示-Infinity。例如,1/0得到的就是无穷大。
  • NaN:NaN代表一个计算错误,它是一个错误的操作所得到的结果。例如,字符串和一个数字相乘
  1. 表示进制

二进制以0b开头,八进制以0o开头,十六进制以0x开头。

3.4.2.1 isNaN()函数

isNaN()函数用于检查其参数是否是非数字值。如果参数为NaN或字符串、对象、undefined等非数字值则返回true,否则返回false。

3.4.3 String类型

  1. 属性

    属性名说明用法
    length用户获取字符串的长度字符串变量.length
  2. 字符串拼接

    var name = "qzw"
    var info = "My name is"
    
    var infoName1 = info + name	//My name is qzw
    

3.4.4 Boolean类型

阿巴阿巴~

3.4.5 Undefined类型

  • 最好在变量定义的时候进行初始化
  • 不要显示地将一个变量赋值为undefined。如果变量刚开始什么都没有,可以初始化为0、空字符串、null等值。

3.4.6 Null类型

Null类型只有一个值,即null。通常用来表示一个对象为空,所以在给一个对象进行初始化时,会赋值为null。

var obj1 = {}		//此时,堆内存中已经为对象开辟出一个内存地址,表示这个对象已经存在

var obj2= null		//当一个对象进行初始化但不知道初始化为什么值时,使用null对其进行初始化,并且null在转成Boolean类型时会转为false
console.log(typeof null)	//object

null和undefined的区别

  • undefined通常只有在一个变量声明但是未初始化时,它的默认值是undefined才会用到;
  • null值非常常用,当一个变量准备保存一个对象时,但是这个对象不确定时,可以先赋值为null。

3.4.7 Object类型

通常称为引用类型复杂类型

3.5 数据类型的转换

在大所属情况下,运算符和函数会自动地将赋予他们的值转换为正确的类型,这叫做隐式转换。我们也可以自己通过显示的方式来对数据类型进行转换【显示转换】。

3.5.1 转为String类型

  1. 隐式转换【常用】

    ①一个字符串和其它类型进行 + 操作

    • 如果 + 运算符左右两边有一个是字符串,那么另一边会自动转换成字符串类型进行拼接

    如果一个Number类型的变量要转为String类型。最简单的办法就是加上一个空字符串。

    ②某些函数的执行也会自动将参数转换为字符串类型

    • 例如:consolg.log函数
// 隐式转换
// ①一个字符串和其它类型进行 + 操作
var num1 = 2
var str1 = "abc"

var result1 = num1 + ""		//非常常用
var result2 = num1 +str1

console.log(result1)
console.log(result2)
  1. 显示转换

    ①调用String()函数

    ②调用toString()方法

var num2 = 2
var num2Str = String(num2)

console.log(num2Str)
console.log(typeof num2Str)     //string

3.5.2 转为Number类型

  1. 隐式转换

在算数运算 -*/中,通常会将其它类型转换成数字类型来进行运算,例如:"6" / "2"。但是如果是 + 运算,并且其中一边又有字符串,那么还是按照字符串来连接的。

var result1 = "6" - "2"
console.log(result1)            // 4
var result1 = "6" * "2"
console.log(result1)            // 12
var result1 = "6" / "2"
console.log(result1)            // 3
  1. 显示转换

使用Number()函数。

var num1 = 2
var result1 = Number(num1)      // 2
console.log(typeof result1)     // number

console.log(Number("123"))      // 123
  1. 其它类型转换为Number类型的规则
转换后的值
undefinedNaN
null0
true和falsetrue转换为1,false转换为0
string规则:先对字符串进行处理,去掉字符串中首位空格。若处理后的字符串为空,则转换结果为0;若为纯数字,则转换为数字;若含有其它字符,则转换为NaN
// 其它规则
var result2 = Number(undefined)
console.log(result2)            // NaN
console.log(typeof result2)     // number

// String类型转Number类型
console.log(Number(""))         // 0
console.log(Number("123"))      // 123
console.log(Number("   123 "))  // 123
console.log(Number("abc123"))   // NaN
console.log(Number("123abc"))   // NaN

3.5.3 转为Boolean类型

常发生在运算的判断条件中。

  1. 隐式转换

    转换后
    0、null、undefined、NaN、'""0
    其它值1

    注意:包含0的字符串转换后是true(非空的字符串总是true)