Javascript 基础数据类型

2.1 两种数据类型概念

  • 基础类型

    • 原始类型(基础类型)数据保存在栈内存里
    • 包括:Number、String、Boolean、Undefined、Null、Symbol
  • 复杂类型

    • 复杂类型(引用类型)数据保存在堆内存里,通常内存占据空间较大,存放的是地址。

    • 包括:对象{},数组[]、函数(){}

2.2 基础类型数据-Number

  • 声明定义

    js 复制代码
    // 字面量声明
    var num = 1;
    console.log(typeof num)		// number
    
    // 数字对象方式声明
    var num = new Number(2);
    console.log(num + 3)	// 5
  • 数字方法

    • 整数判断

      js 复制代码
      console.log(Number.isInteger(1.3))	// false
    • 指定返回的小数位数

      js 复制代码
      console.log((12.345).toFixed(2))	// 12.35
  • NaN - 表示非数字值

    js 复制代码
    var a = '123';
    console.log(Number(a));		// 123
    console.log(isNaN(a));		// false
    
    var b = 'asdf'
    console.log(Number(b));		// NaN
    console.log(isNaN(b))		// true

    注意null""两个值会被判断为数字,所以使用前应该屏蔽

    js 复制代码
    var a = '';
    console.log(Number(a));		// 0
    console.log(isNaN(a));		// false
    
    var b = null
    console.log(Number(b));		// 0
    console.log(isNaN(b))		// false
  • 浮点精度

    • js语言在浮点数计算时会有精度误差问题

      js 复制代码
      var a = 0.1 + 0.2
      console.log(a)		// 0.30000000000000004
    • 解决方式

      js 复制代码
      var a = 0.1 + 0.2
      console.log(a.toFixed(1))	// 0.3

2.3 基础类型数据 - String

  • 声明定义

    js 复制代码
    // 字面量声明
    var name = '小帅'		// 可以使用单引号或者双引号
    
    // 字符串对象方式声明
    var name = new String('小帅')
  • (常用)字符串方法

    js 复制代码
    // 连接运算符
    var address = 'csdn.net'
    name = 'CSDN'
    console.log(name + '网址为' + address)		// CSDN网址为csdn.net
    
    // 获取长度
    console.log('csdn.net'.length)	// 8
    
    // 大小写长度
    console.log('csdn.net'.toUpperCase())	// CSDN.NET
    console.log('CSDN.NET'.toLowerCase())	// csdn.net
    
    // 移除空白
    var str = '   csdn.net   '
    console.log(str.length)		// 14
    console.log(str.trim().length)
    
    // 获取单字符
    console.log('csdn.net'.charAt(3))	// n
    console.log('csdn,net'[3])	// n
    
    // 截取字符串
    var n = 'csdn.net'.slice(1, 5)	// 左闭右开
    console.log(n)	// sdn.
    
    // 查找字符串
    console.log('csdn.nets'.indexOf('s'))	// 1
    console.log('csdn.nets'.indexOf('s', 6))	// 8 从第六个字符开始搜索
    
    // 替换字符串
    var name = 'CSDN教育机构'
    var changeName = name.replace('机构', '课堂')
    console.log(changeName)		// CSDN教育课堂
    
    // 类型转换(将'2022-01-22'时间格式转换为'2022/01/22')
    var time = '2022-01-22'
    console.log(name.split('-'))	// ['2022', '01', '22']
    
    var a = name.split('-')
    console.log(a.join('/'))	// 2022/01/22

2.4 基础类型数据 - Boolean

  • 声明定义

    js 复制代码
    // 字面量声明
    var a = true
  • 隐式转换

    几乎所有的类型都可以隐式转换为Boolean类型

    基础类型 true false
    String 非空字符串 空字符串
    Number 非0的数值 0/NaN
    Array 数组不参与比较时 参与比较的空数组
    Object
    undefined
    null
    NaN
    js 复制代码
    // String
    console.log(Boolean('123'))		// true
    console.log(Boolean(''));		// false
    
    // Number
    console.log(Boolean(1))		// true
    console.log(Boolean(NaN));	// false
    
    // Array
    var list1 = [];
    var list2 = [1, 2]
    console.log(Boolean(list1))		// true
    console.log(Boolean(list2))		// true
    console.log(list2 == true)		// false

    当其他类型与Boolean类型对比时,会将其他类型先转换为数值类型再对比

    js 复制代码
    console.log(Number('123'));		// 123
    console.log('123' == true);		// false
    console.log('1' == true);		// true
    
    console.log(Number([]));		// 0
    console.log([] == true);		// false
  • 显式转换

    js 复制代码
    var a = ''
    console.log(!!a)	// false
    
    a = 0
    console.log(!!a)	// false
    
    a = null
    console.log(!!a)	// false
    
    a = 1
    console.log(!!a)	// true

2.5 基础数据类型 - Undefined、Null、Symbol

  • Undefined/Null

    • Null和Undefined基本是同义的

      js 复制代码
      undefined == null	// true

      null 是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。

      js 复制代码
      console.log(Number(null))	// 0
      console.log(Number(undefined))	//NaN
      console.log(5 + undefined)		//NaN
    • Undefined

      js 复制代码
      // 变量被声明了,但没有赋值时,就等于undefined
      var i
      console.log(i)		// undefined
      
      // 对象没有赋值的属性,该属性的值为undefined
      var o = new Obeject()
      console.log(o.p)	// undefined
      
      // 函数没有返回值时,默认返回undefined
      function test(){}
      console.log(test())		// undefined
    • Null

      js 复制代码
      null 	// 表示"没有对象", 即此处不该有值
      用法:
      (1) 作为函数的参数,表示该函数的参数不是对象
      (2) 作为对象原型链的终点
       Object.getPrototypeOf(Object.prototype) // null
  • Symbol(es6的语法)

    • Symbol('name')生成唯一属性

      js 复制代码
      // 在一个对象中需要增加一个相同的属性名
      var xs = {aa : '1'}
      var aa = Symbol('aa')
      xs[aa] = 2
      console.log(xs)
相关推荐
咪库咪库咪11 分钟前
async await
前端·javascript
养生匠13 分钟前
我写了个yapi 转化前端ts请求接口的代码,真的很好用
javascript
hahala233313 分钟前
依赖注入(DI)
javascript·node.js
任尔东西南北风16 分钟前
前端请求工具封装
前端·javascript
Slow菜鸟26 分钟前
JavaScript与UniApp、Vue、React的关系
javascript·vue.js·uni-app
VT.馒头35 分钟前
【力扣】2629. 复合函数——函数组合
前端·javascript·算法·leetcode
程序猿--豪36 分钟前
前端技术百宝箱
javascript·vue.js·react.js·webpack·gitee·css3·html5
程序员buddha36 分钟前
ThinkPHP8.0+MySQL8.0搭建简单实用电子证书查询系统
javascript·css·mysql·php·layui·jquery·html5
每天吃饭的羊1 小时前
React 性能优化
前端·javascript·react.js
小柚净静1 小时前
npm install vue-router 无法解析
javascript·vue.js·npm