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)
相关推荐
z_y_j2299704382 分钟前
vue前端项目打包和部署
前端·javascript·vue.js
lbchenxy4 分钟前
antd vue a-range-picker如何设置不能选择当前和之后的时间,包含时分秒
前端·javascript·vue.js
RR133511 分钟前
一个小错误:Content-Type ‘text/plain;charset=UTF-8‘ is not supported 的粗心
开发语言·前端·javascript
PasserbyX17 分钟前
输入URL后发生了什么
前端·javascript
六冰哈哈哈24 分钟前
不想使用三方监控平台监控白屏报错?试试手动写一个白屏报错组件吧
前端·javascript
前端小白从0开始27 分钟前
前端基础知识ES6系列 - 01(var、let、const之间的区别)
前端·javascript·vue.js·es6
o0向阳而生0o1 小时前
69、JS中如何调用上位机接口
javascript·上位机
白总Server1 小时前
Golang dig框架与GraphQL的完美结合
java·大数据·前端·javascript·后端·go·graphql
m0_679927202 小时前
练习小项目11:鼠标跟随小圆点
前端·javascript·css·html
BillKu2 小时前
Vue3 + TypeScript 操作第三方库(Element Plus 的 ElTable)的内部属性
前端·javascript·typescript