JS中常用的数据类型

JS中常用的数据类型

  • 基本数据类型
    • 数字 number(常规数字和NaN)
      常规数字和NaN
    • 字符串 string
      所有用单引号、双引号、反引号、包起来的都是字符串
    • 布尔boolean
      true/false
    • 空对象指针null
    • 未定义undefined
  • 引用数据类型
    • 对象数据类型object
    • {} 普通对象
    • [] 数组对象
    • /1?(\d|([1-9]\d+))(.\d+)?$/ 正则对象
    • Math数学函数对象
    • 日期对象
    • 函数数据类型function

number数字类型

包含:常规数字、NaN

NaN

not a number:不是一个数,但他隶属于数字类型

  • NaN和任何值(包括自己)都不相等:NaN != NaN,所以我们不能用相等的方式判断是否为有效数字。

isNaN

检查一个值是否为非有效数字,如果不是有效数字返回True,反之是有效数字返回False。
在使用isNaN进行检测的时候,首先会验证检测的值是否为数字类型,如果不是,先基于number()这个方法,把值转换为数字类型,然后再检测.

把其他类型值转换为数字类型

  • Number([vall])

把字符串转换为数字,只要字符串中包含任意一个非有效数字字符,结果都是NaN,空字符串会变为数字0。

  • 布尔类型转换为数字ture是1,false是0.
  • 把引用数据类型转换为数字,是先把他基于toString方法转换为字符串,然后再转换为数字。
console.log(Number({name:'10'}));//=>NaN
console.log(Number({}));//=>NaN
console.log(Number([]));//=>0
console.log(Number([12]));//=>12
console.log(Number([12,13]));//=>NaN
  • parseInt/parseFloat([val],[进制]);也是转换为数字的方法,对于字符串来说,他是从左到右依次查找有效数字字符,直到遇到非有效数字字符,停止查找(不管后面是否还有数字,都不在找了),把找到的当作做数字返回。
parseFloat(true)//=>NaN
Number(true)//=>1

String字符串数据类型

所有用单引号、双引号、反引号(撇 ES6模板字符串)包起来的都是字符串

把其他类型值转换为字符串

  • [val].toString()

    • null和underfined是禁止直接toString的
      (null).toString() //=>报错
      但是和underfined一样转换为字符串的结果就是’null’/underfined
    • 普通对象.toString()的结果是"[object Object]",因为Object.prototype.toString方法不是转换为字符串的,而是用来检测数据类型的。
  • 字符串拼接

    • 四则运算法则中,除加法之外,其余都是数学计算,只有加法可能存在字符串拼接(一旦遇到字符串,则不是数学运算,而是字符串拼接)
    console.log('10'+10)//=>'1010'
    console.log('10'- 10)//=>0
    console.log('10px'+10)//=>NaN
    
    let a = 10 + null + true + [] + underfined + '乐乐' + null + [] + 10 + false;
    /* 
     * 10 + null -> 10 + 0 -> 10
     * 10 + true -> 10 + 1 -> 11
     * 11 + [] -> 11 + '' -> '11' 空数组变为数字,先要经历变为空字符串,遇到字符串,直接变为字符串拼接
     * '11' + undefined -> '11undefined'
     * ...
     * '11undefined乐乐null10false'
     */
    

    boolean布尔数据类型

    只有两个值 true/false

    把其它类型值转换为布尔类型

    只有0、NaN、’’、null、undefined五个值转换为False,其余都转换为True(而且没有任何特殊情况)。

    • Boolean([val])
    console.log(Boolean('')) //=>false
    
    • !/!!
    • !取反(先转换为布尔,然后取反)
    • !取反再取反,相当于转换为布尔 == Boolean
    • 条件判断

null/undefined

null和undefined都代表的是没有

  • null:意料之中(一般都是开始不知道值,我们手动先设置为null,后期再给予赋值操作)
  • 0是有空间的(他在栈内存中有自己的存储内存),null是不占空间。一般最好用null作为初始的空值。
  • undefined:意料之外(不是我能决定的)

Object对象数据类型-普通对象

{[key]:[value],…}任何一个对象都是由零到多组键值对(属性名:属性值)组成的(并且属性名不能重复)。

  let person = {
     name = '罗云熙',
     age = 30,
     height = '185cm',
     weight = '50kg'
  };
  • 设置属性名属性值

    • 属性名不能重复,如果属性名已经存在,不属于新增属于修改属性值。
     person.GF = '圆圆';
     console.log(person['GF'])
    
  • 获取属性名对应的属性值

    • 对象.属性名
    • 对象[属性名] 属性名是数字或者字符串格式的
    • 如果当前属性名不存在,默认的属性值是undefined
    • 如果属性名是数字,则不能使用"对象.属性名"的方式获取属性值
    console.log(person.name);
    console.log(person['age']);
    console.log(person,sex);=>undefined
    
  • 删除属性

    • 真删除:把属性彻底干掉。
    delete person['name'];
    
    • 假删除:属性还在,值为空。
    person.weight = null;
    

数组是特殊的对象数据类型

  • 特殊点
    • 数组中括号中设置的是属性值,它的属性名是默认生成的数字,从0开始递增,而且这个数字代表每一项的位置,我们将其称为“索引”。从零开始,俩u下递增,代表每一项位置的数字属性名。
    • 天生默认一个属性名length,存储数组的长度。
  let ary = [12,'哈哈',true,13];
  console.log(ary);
  //第一项索引0,最后一项索引ary.length-1
  console.log(ary[0]);
  console.log(ary[length-1]);
  • 向数组末尾追加内容
  ary[ary.length] = 100;

堆栈底层机制

浏览器想要执行JS代码:

  • 从电脑内存中分配出一块内存,用来执行代码(栈内存 => Stack)。
  • 分配一个主线程用来自上而下执行JS代码。

  1. +- ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值