初步探索JS数据类型

举报
小妖现世 发表于 2020/07/13 20:21:49 2020/07/13
【摘要】 首先,恭喜华为前端全栈培养计划进入了第二阶段,接下来的几个阶段也要加油,把知识巩固复习强化。在第一阶段复习了css+html,感觉一下子就加深了好多印象。同时也希望华为classroom可以越来越好。好了,下面来分享JS数据类型部分: 数据类型检测: t‍ypeof [value] 检测数据类型的运算符,返回结果是一个字符串(字符串中包含了数据类型)‍ typeo...

    首先,恭喜华为前端全栈培养计划进入了第二阶段,接下来的几个阶段也要加油,把知识巩固复习强化。在第一阶段复习了css+html,感觉一下子就加深了好多印象。同时也希望华为classroom可以越来越好。好了,下面来分享JS数据类型部分:

    先来说下JS的堆栈内存:

    内存的概念:

    ECStack :栈内存,供代码自上而下执行,存储基本类型值,执行环境栈

    EC(G)全局执行上下文

    VO(G)存放全局变量对象的地方

    Heap :堆内存,是一个16进制的地址,存储引用类型值    

    所谓堆栈内存,其实就是在计算机内存中分配出来的一块空间,用于执行和存储代码的

    let a=12;

    创建12这个值,存放到栈内存中(栈内存是用来执行代码和存储基本类型值的)

    创建变量a存储到VO(G)

    最后让a指向12这个值(=赋值的意思就是值的指向)

    堆内存:

        let obj={xxx:'xxx'}

        创建对象值(引用数据类型不能直接存储到栈内存中)

        把对象中的键值对存储到堆中

        把堆内存的地址存放到栈内存中,供变量指向

        创建变量obj,存储到VO(G)

        让obj指向堆内存的地址

        后期obj.xxx的所有操作,都是先基于地址找到堆内存,从而来操作堆内存中的内容

    引用数据类型(对象函数):

    引用数据类型的结构相对复杂,(一个综合体,包含多种值),不能直接存储在栈内存中,需要单独开辟空间来存储,这个空间就是“堆内存”

    引用类型值都要先转换(隐世类型转换)为字符串在转换为数字   


    数据类型检测:

        typeof [value]  检测数据类型的运算符,返回结果是一个字符串(字符串中包含了数据类型)

        typeof细节点:

        typeof 检测的结果首先是一个字符串,字符串中包含了对应的数据类型(“number”、“string”、“boolean”、“undefined”、“object”、    “function”、“symbol”、“bigint”)

   特殊的检测结果:

        NaN / Infinity 都是数字类型,检测出来的结果是“number”

        typeof null 的结果是“object”

        typeof 普通对象 / 数组对象 / 正则对象...结果都是“object”,这样就无法基于typeof区分是普通对象还是数组对象

        由于typeof返回的结果永远是一个字符串,所以连续出现两个以上typeof检测的时候,最后结果都是“string”

    typeof 12 =>"number"

    typeof "zhufeng" =>"string"

    typeof [1,2] ==>"object"

    typeof undefined =>"undefined"

    typeof function(){} =>"function"

    typeof null =>“object” 但是null并不是对象

    let num=10,

    num2=new Number(10);

    let arr=[10,20],

    obj={xxx:"xx"};

    alert会把所有要输出的值转换为字符串(隐性转换),字符串拼接也是

        


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。