基本数据类型

JS中的数据类型由原始值和对象共同组成,原始值一共有七种原始值:

  1. 数值(Number)
  2. 大整数(BigInt)
  3. 字符串(String)
  4. 布尔值(Boolean)
  5. 空值(Null)
  6. 未定义(Undefined)
  7. 符号(Symbol)
数值和大整数

数值(Number):在js中所有的整数和浮点数都是number类型

  1. let a = 3
  2. let b = 3.1415926

在js中的数值不是无限大的,当数值超过一定范围后会显示近似值,如果再大一点,会显示科学计数法,如果数值再大超过可显示范围,会显示为Infinity,Infinity是一个特殊数值表示无穷

  1. // js小数计算一定的精度限制,在大多数情况下,精度是足够的,对于某些特定的小数运算,可能会出现不精确的结果
  2. a = 0.1 + 0.3 // 0.30000000000000004
  1. a = 1 - "2" // NaN (Not a Number) ,NaN也是一个特殊的数值,表示非法的数值,数值和字符串做运算

大整数(BigInt):大整数用来表示一些比较大的整数,使用n结尾,可以表示的范围是无限大,取决于内存大小,小数无法使用大整数

  1. // 数字后以n结尾,大整数不能和整数直接进行运算
  2. a = 9999999999999999999n
字符串string

使用单引号或者双引号表示字符串

  1. let a = "hello"
  2. let b = 'world'

转义

字符串转义使用\反斜杠

  1. a = "这是一个\"字符串\""

字符串不能直换行,如果换行需要+一个\

  1. a = "这是一串\
  2. 字符串"

模版字符串

模板字符串使用反单引号表示``,模板字符串可以直接换行,字符串的换行、空格等效果会保留

  1. a = `这是一串
  2. 字符
  3. 串`

模板字符串可以嵌入变量,使用${变量名}语法

  1. let a = "xiaoli"
  2. let str = `name is ${a}` // name is xiaoli
布尔值boolean
  1. let a = true
  2. let b = false
空值Null

空值只有一个值null,用来表示空对象,typeof类型是object

  1. let a = null
未定义

作用和空值类似,同样只有一个值undefine

  1. let a // 变量a未赋值,就是undefined
符号symbol

symbol用于创建一个符号,表示一个唯一标识

  1. let a = Symbol()
原始值不可修改

原始值都是不可变的类型,值一旦创建就无法修改

  1. let a = 100
  2. a = 200 // 检查内存如果没有200的值,会创建一个200的值,然后a指向200的内存地址,并不会修改原先的100

类型检查

js使用typeof检查的类型

typeof 检查的是变量存储的值的类型,变量是没有类型的

  1. let a = 100
  2. console.log(typeof a) // number

类型转换

转换为字符串

toString()

  1. let a = 100
  2. a.toString() // 作用是新创建一个100的字符串,并不是数值100变为字符串100
  3. console.log(typeof a) // number
  4. a = a.toString() // 创建一个字符串 赋值给a a变为string
  5. console.log(typeof a) // string

null、undefined没有toString方法,无法转换字符串,会报错,其他可以通过该方法转换字符串

String()

  1. let a = 100
  2. string(a) // a 是 number
  3. a = String(a) // a是string,与toString原理一样

使用String(parm) 方法,null、undefined会转换成字符串null、undefined

转换为数值

Number()

  1. let n = "100"
  2. Number(n) // string
  3. n = Number(n) // number

如果转换源是一个合法的数字,会正常转换,如果不合法,则转换成NaN

如果是空字符串或者只包含空格的字符串,则会转换成0

parseInt() / parseFloat

  1. // 只支持字符串类型,不支持其他类型,Number支持其他类型
  2. a = parseInt(a) // 将字符串转换为整数
  1. let a = "123pppp"
  2. a = parseInt(a) // a = 123,解析时会从左往右解析,获取合法数字,遇到非数字时终止,如果字符串是字母开头数字在后,则无法解析到数字

parserInt与Number的区别:Number只能解析合法的数据以及字符串以外的类型,parse只能解析字符串,但是可以解析不合法的数据

如果传入的参数不是字符串,则会先将参数转换为字符串,再进行解析,无法解析小数位之后的数字,如果123.456,会解析成数字123

  1. a = parseFloat(a) // 原理逻辑与parseInt一致
转换为布尔

数字

  1. let a = 1
  2. a = Boolean(a) // true
  3. let b = 0
  4. b = Boolean(b) // false

在数字中,除了0和NaA是false,其余都是true

  1. a = true // 1
  2. a = false // 0
  3. a = Infinity //true
  4. a = -1 // true
  5. a = 100 //true
  6. a = 0 // flase
  7. a = NaN // false

字符串

空字符串是false,其余都是true

  1. let a = "" // false
  2. let b = " " //true

其余null和undefined都会转换为false

对象通常都会转换为true

转换为null和undefined
  1. a = null
  2. a = undefined

JS数据类型&类型转换的更多相关文章

  1. JavaScript学习10 JS数据类型、强制类型转换和对象属性

    JavaScript学习10 JS数据类型.强制类型转换和对象属性 JavaScript数据类型 JavaScript中有五种原始数据类型:Undefined.Null.Boolean.Number以 ...

  2. [妙味JS基础]第四课:JS数据类型、类型转换

    知识点总结 JS数据类型:number数字(NaN).string字符串.boolean布尔值.函数类型.object对象(obj.[].{}.null).undefined未定义 typeof 用来 ...

  3. js 自动类型转换

    js自动类型转换 1.==符号在判断左右两边数据是否相等时,如果数据类型一致,直接比较值即可 2.==符号左右数据类型不一致时,如果两方数据为布尔型.数值型.字符串型时,不为数字的那一方自动调用Num ...

  4. js数据类型隐式转换问题

    js数据类型隐式转换 ![] == false //true 空数组和基本类型转换,会先[].toString() 再继续比较 ![] == [] //true ![] //false [] == [ ...

  5. JS的类型转换,强制转换和隐式转换

    JS的类型转换 1.强制转换 通过String(),Number(),Boolean()函数强制转换 var str=123; var str1='123'; console.log(typeof s ...

  6. vue—你必须知道的 js数据类型 前端学习 CSS 居中 事件委托和this 让js调试更简单—console AMD && CMD 模式识别课程笔记(一) web攻击 web安全之XSS JSONP && CORS css 定位 react小结

    vue—你必须知道的   目录 更多总结 猛戳这里 属性与方法 语法 计算属性 特殊属性 vue 样式绑定 vue事件处理器 表单控件绑定 父子组件通信 过渡效果 vue经验总结 javascript ...

  7. js数据类型详解

    一.js数据类型分类 (1)原始数据类型(值类型) null 空类型,变量声明了并赋值为null.转化为数字是0 undefined 未定义,变量声明了但未赋值.转化为数字为NaN boolean 布 ...

  8. js数据类型的转换

    类型转换:就是把一种数据类型转换成另一种数据类型,在js中类型转换有以下三种情况:转数字,转字符串,转布尔值.对象转成这3种数据类型是没有意义的,对象里面可以放任意的数据类型. 在讲解类型转换之前,先 ...

  9. 前端(十一)—— JavaScript基础:JS存在的位置、JS变量定义、调试方式、JS数据类型、运算符

    JS存在的位置.JS变量定义.调试方式.JS数据类型.运算符 一.JS语言介绍 1.概念 浏览器脚本语言 可以编写运行在浏览器上的代码程序 属于解释性.弱语言类型编程语言 2.组成 ES语法:ECMA ...

  10. 前端面试:js数据类型

    js数据类型是js中的基础知识点,也是前端面试中一定会被考察的内容.本文旨在知识的梳理和总结,希望读者通过阅读本文,能够对这一块知识有更清晰的认识.文中如果出现错误,请在评论区指出,谢谢. js数据类 ...

随机推荐

  1. Codeforces Round 947 (Div. 1 + Div. 2) A~H

    Codeforces Round 947 (Div. 1 + Div. 2) A 模拟. B 最小的 \(a\) 肯定作为 \(i\).对于不被 \(i\) 整除的,最小的那个作为 \(j\),判断是 ...

  2. pidstat命令详解

    pidstat命令详解 pidstat 命令是 sysstat 工具的一个命令,用来监控全部或者指定进程的CPU.内存.线程.设备IO等系统资源的占用情况.pidstat 首次运行时显示自系统启动开始 ...

  3. docker centos8 java8 mysql8 部署springboot项目

    docker centos8 java8 mysql8 部署springboot项目 一,用idea将springboot项目打成jar包 二,将打的jar包用xshell的rz上传到docker的c ...

  4. 【Scala】09 偏函数 PartialFunction

    更像是策略函数 可拆分成一个部分,是若干个函数的组合 package cn object HelloScala { def main(args: Array[String]): Unit = { // ...

  5. 举例说明:ChatGPT和百度文心一言的差距

    翻译: we employ ten sub-generators against one discriminator 百度的表现: ChatGPT的表现:

  6. 【转载】 【WarpDrive】GPU加速RL: 一块V100运行上千个智能体、数千个环境,这个「曲率引擎」框架实现RL百倍提速

    原文地址: https://mp.weixin.qq.com/s/Vw39k2PteEIGLRhmh2raLQ ============================================ ...

  7. 多线程之interrupt与优雅停止一个线程

    1.背景 在实际开发中,我们可能会遇到终止某个线程的场景, 比如不断扫描数据库的发货订单时,这时候需停止扫描, 当然我们不能把程序关了,我们只希望停止扫描数据库这一个线程, 那么应该怎么办了? 这就可 ...

  8. Cython将Numpy数组转为自定义结构体

    技术背景 前面我们写过几篇关于Cython的文章,例如Cython计算谐振势.Cython与C语言的结合.Cython调用CUDA Kernel函数.Cython有着非常Pythonic的编程范式,又 ...

  9. 一文搞懂DevOps、DataOps、MLOps、AIOps:所有“Ops”的比较

    引言 近年来,"Ops"一词在 IT 运维领域的使用迅速增加.IT 运维正在向自动化过程转变,以改善客户交付.传统的应用程序开发采用 DevOps 实施持续集成(CI)和持续部署( ...

  10. CH02_数据类型

    CH02_数据类型 数据类型 整型 描述:整型变量表示的是整型类型的数据,C++中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同. 数据类型 占用空间 取值范围 short(短整型) 2字 ...