【JS】数据类型

一、 数据类型的划分

1. 原始类型(基本类型)

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

2. 对象类型(复合类型)

复杂数据类型又叫做引用类型、对象类型,在存储变量时存储的是引用地址,复杂类型更是基本类型的复合,复杂类型可以包含基本类型。如Object,Array,Function……

二、 判断数据的类型

let num = 1
console.log(typeof (num));  //number

三、 基本类型

1. number数值类型

1.1 整型

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

0123 : 0 开头表示八进制

0b11 : 0b 开头表示二进制

0x11 : 0x 开头表示十六进制

直接打印出来会转化为十进制

1.2 浮点型

  • 直接写小数
  • 浮点的精度问题(十进制小数转为二进制小数,大部分无法精确转换;整数不存在这个问题)

1.3 科学计数法

用来显示较大的值

198e2=19800 2e-2=0.02

1.4 NaN

NaN 的全称是 Not a Number

NaN是number类型,是一个数值,但不是一个有效数字

NaN有两个特点:

  • 特点1:NaN与任何数进行任何运算结果都是NaN
  • 特点2:NaN与任何数都不相等,包括自己

函数isNaN()专门判断一个数据是否是NaN,如果是NaN,返回值是true,否则是false

1.5 JavaScript 中数字的有效范围

  • 最大可表示的数字:1.7976931348623157e+308
  • 最小可表示的数字:-1.7976931348623157e+308
  • 可表示最小的正数:5e-324
  • 可表示最大的负数:-5e-324

如果超过范围,会表示为 Infinity 或者 -Infinity

函数 isFinite() 判断一个数字是否是有效数字,true是有效数字,false是无效数字

2. string 字符串类型

2.1 字符串的表示方式

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

2.2 引号嵌套

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

2.3 转义字符

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

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

3. boolean布尔类型

boolean类型数据表示一种状态,是或者否,肯定或否定

有两个形式,true表示肯定和false表示否定

4. null和undefined

null表示没有对象,即该处不应该有值

  1. 作为函数的参数,表示该函数的参数不是对象
  2. 作为对象原型链的终点
  3. 获取 DOM 获取不到的时候
  4. 如果一个变量声明之后不知道赋什么值,可以先赋值null

undefined表示缺少值,即此处应该有值,但没有定义

  1. 定义了变量没有给值,使用该变量的时候自动得到undefined
  2. 定义了形参,没有传实参,显示 undefined
  3. 对象属性名不存在时,显示 undefined
  4. 函数没有写返回值,即没有写return,拿到的是 undefined
  5. 写了return,但没有赋值,拿到的是 undefined

image.png

这张图可以形象的展示有值、0、null和undefined区别

四、数据类型转换

1. 规则

1.1 其他类型转为number类型

string -> number:

  1. 只有纯数字字符串转为对应的有效数字,十六进制形式和科学计数法形式也都是纯数字
  2. 空字符串转为0
  3. 其他内容的字符串转为NaN
  4. 字符串两端有空格,自动进行剔除,剩下的内容按照以上规则再进行转换

boolean -> number:

  1. true转为1
  2. false转为0

undefined -> number:NaN

null -> number:0

1.2 其他类型转为 string 类型

其他类型转为字符串类型,数据的表示形式是什么就转成什么样的字符串,原封不动输出

1.3 其他类型转为 boolean 类型

number -> boolean:

  1. 0会转换成false
  2. NaN会转换成false
  3. 其他转为true

string -> boolean:

  1. 空字符串转为false
  2. 其他转为true

undefined -> boolean:false

null -> boolean:false

2. 强制类型转换(显示转换)

2.1 其他类型转为number类型的函数

Number() parseInt() parseFloat()

parseInt()、parseFloat() 与 Number() 的区别:

  1. parseInt() parseFloat() 本意是提取字符串中的数字
  2. 纯数字字符串、以数字开头的字符串可以转为有效数字
  3. 会自动去掉两端空格
  4. 空字符串以及其它形式的字符串都转为NaN
  5. boolean、null、undefined都转为NaN

parseFloat() 和 parseInt 的区别:

  1. parseFloat()保留完整的数字(整数部分+小数部分)
  2. parseInt()只保留整数部分
var numStr = " 123.09 ";
var bol = true;
console.log(Number(numStr)); //123.09
console.log(parseFloat(numStr)); //123.09
console.log(parseInt(numStr)); //123
console.log(Number(bol)); //1
console.log(Number(!bol)); //0
console.log(Number(undefined)); //NaN
console.log(Number(null)); //0

2.2 其他类型转为string类型的函数

String()

var numStr = " 123.09 ";
var bol = true;
var num = 45;
console.log(String(numStr)); // 123.09 
console.log(String(bol)); //true
console.log(String(!bol)); //false
console.log(String(undefined)); //undefined
console.log(String(null)); //null

2.3 其他类型转为boolean类型的函数

Boolean()

var numStr = " 123.09 ";
var bol = true;
var num = 45;
console.log(Boolean(num)); //true
console.log(Boolean(0)); //false
console.log(Boolean(NaN)); //false
console.log(Boolean(''));//false
console.log(Boolean(numStr));//true
console.log(Boolean(undefined)); //false
console.log(Boolean(null)); //false

3. 自动类型转换(隐式转换)

  1. js作为弱类型编程语言,支持自动类型转换
  2. 自动类型转换的规则和强制类型转换一样
  3. 在进行某种运算的时候,如果数据类型与运算要求的数据类型不一致,会自动类型转换(具体可见运算符)
  4. 运算符决定运算中所需要的数据类型

五、值类型和引用类型

值类型: 就是原始类型的数据,也叫不可变类型,包括number string boolean等
引用类型: 就是对象类型的数据,也叫可变类型,包括array function object……
二者区别:

  1. 内存存储方式
    值类型:存在栈结构中
    引用类型:数据存在堆结构中,栈结构中存的是地址

  2. 赋值方式(传值方式)
    值传递:原始类型赋值,传递的就是值
    引用传递:引用类型赋值,传递的是

  3. 可变和不可变
    不可变类型:原始类型、值类型,不能修改其中的一部分
    可变类型:对象类型、引用类型,可以修改其中的一部分(属性),修改之后,对象还是那个对象

  4. 判等方式
    值类型:值相同就是等的
    引用类型:地址相同才是相等的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值