数据类型:

  • 基本数据类型+引用数据类型

    • Boolean

      • 只有true、false两个值
    • String
      • String的意义不是‘字符串’,而是字符串的UTF16编码,国际标准中字符是以Unicode的方式表示的,UTF16和UTF8是Unicode的编码方式
      • String的最大长度是什么?受到编码长度的影响
      • 如何表示一个很长的数字?
        • Number

          • 整数和小数都只有一个Numebr类型,Number类型的数字是按照双精度浮点数的规则来的
          • 可能遇到浮点数运算的问题,所以不能直接对两个浮点数进行运算符 (浮点数精度问题)
            • Math.round(`${+number}e${precision}`) / Math.pow(10, precision); 一般的解决方法是,将数字升级为整数,乘以10的几次幂,为计算机能够精确识别的整数,再降级乘以10的几次幂

            • 1.335.toFixed(2) // 1.33错的 ; Math.round(1.335e2) / Math.pow(10,2) //1.34对的

            • 在JavaScript中,我们通过在数字后面加上字母"e"并指定零计数来缩短数字:https://javascript.info/number;"e"将数字乘以1给定的零计数。1e3 = 1 * 1000 ; 1.23e6 = 1.23 * 1000000
    • Undefined
      • undefined也是全局的变量,所以有的编程规范会使用void 0来替代undefined,因为很容易被改变。而且使用void 0进行运算编译的时间比undefined断,查看其他博文显示。
      • undefined和null在JS中都表示无,这里追本溯源是因为,在java中null表示对象,但是创始人觉得null无法代表基本数据类型的无,所以创造了undefined
      • undefined和null几乎一样,但是在转数字上undefined会转为NaN,null会转为0
    • Null
      • 只有一个值null
    • Symbol
    • Object
  • 对象类型包括:
    • Object
    • Array
    • Function
    • String
    • Boolean
    • Number
    • Date
    • RegExp
    • Error
    • ...

区别:

  • 3和new Number(3)的区别?

    • 一个是Number类型,一个是对象类型
  • JS内存空间:堆栈
    • 栈内存: 存放基本数据类型,和引用数据类型的指针
    • 堆内存:存放引用数据类型(对象)和闭包
    • 池:存放常量
  • 变量的复制
    • 基本数据类型:直接在栈中重新开启空间给赋值的变量
    • 引用数据类型,在栈中添加一个变量和指针指向堆中的对象;所以对属性的操作会影响原对象

问题?

1. - null和undefined:为什么JS中有两个表达‘无’的数据类型?

- 为什么有的编程规范要求用void 0 代替undefined?

null vs undefined

2. ES6新增加的Symbol是什么东西?

3. 字符串有最大长度吗?

  • 因为JS是UTF16的编码方式, 所以字符串的长度受到编码长度的影响

4. 为什么给对象添加的方法能用在基础数据类型上?

  • 运算符提供了装箱操作(把基本数据类型转为为对应的对象),它会根据基础类型构造一个临时对象,使我们能在基础类型上调用对应对象的方法。

考点:

  • 为什么console.log(0.1+0.2 == 0.3) 输出false

    • 因为JS类型为Number的数字是按照双精度浮点数的规则,浮点数的特点是不能使用==或===进行比较。这是浮点数的特点
    • 所以错误不是false的结论而是比较的方法错了,可以使用ES6提供的最小精度值进行比较console.log(Math.abs(0.1+0.2-0.3) < Number.EPSILON)
  • 深拷贝/浅拷贝
    • 了解原理
  • 数据类型的判断
    1. typeof

      • 用于判断基本数据类型和function
    2. A instanceof B
      • 用于判断对象的类型
      • 判断构造函数B的prototype是否在实例对象A的原型链上。如果在则A是B的实例对象,返回true
        • 但是不能判断数组;(因为Object的prototype间接的在原型链上)
        • [] instanceof Array  //true
          [] instanceof Object //true
    3. Array.isArray() 判断数组
    4. Object.prototype.toString.call(x)
      • 判断所有的数据类型
      • ,返回的类型格式为[object,xxx],xxx是具体的数据类型
        • Number/String/Boolean/Undefined/Null/Function/Array/Object/RegExp/Date/Error/HTMLDocument/Window
      • 原因:每个类型都有toString方法,都对其进行了重写
  • 原型链(对象属性的查找)
    1. 每个对象都有与之相关联的对象,为了查找对象的属性
    2. 实例对象的__proto__ = 构造函数的prototype; 即实例对象的原型链
  • 闭包 (函数对象)

JS数据类型-mdn相关推荐

  1. 前端基础(一):js数据类型

    2019独角兽企业重金招聘Python工程师标准>>> 字数:1871 阅读时间:5分钟 引自MDN: 最新的 ECMAScript 标准定义了 7 种数据类型: 6 种原始类型: ...

  2. html js 添加数据类型,js数据类型判断和转换

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 前言 无论笔试还是面试,总会问到数据类型和隐式转换.今天彻底整理一下这块的知识,希望对大家有帮助. 看到下面的题,是不是 ...

  3. 正确判断js数据类型 总结记录

    正确判断js数据类型 总结记录 判断js中的数据类型有一下几种方法:typeof.instanceof. constructor. prototype. 三方库. js六大数据类型 number: 数 ...

  4. 由一次代码优化想到的Js 数据类型

    引子: 上周三进行了代码优化,其中有一个很普遍的代码,例如: if(test =="") {dothis();}else{dothat()} ----->可以简化为 !tes ...

  5. js数据类型 方法 函数

    Js数据类型具体分析 1.     基础类型:  string  number   boolean   null  undefined 2.     引用类型:  object ==>  jso ...

  6. JS数据类型 构造函数 原型链

    js数据类型 基本数据类型:string   undefined   null  boolean  number 引用数据类型  Object  array  function 二者的区别 基本数据类 ...

  7. 基础一:JS数据类型

    *本文章主要总结一下js数据类型的识别判断方法 tyoeof instanceof Object.prototype.toString.call constructor 最后封装一个函数,可以判别所有 ...

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

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

  9. 前端基本功---JS数据类型知多少

    在 JavaScript 编程中,我们经常会遇到边界数据类型判断,在大厂面试中,总是逃不过现场秀一段手写代码,此时往往需要考虑好代码的边界类型,让面试官看到你严谨的编程逻辑和深入思考的能力,面试才算加 ...

最新文章

  1. 前端大神用React刻了一个Windows XP
  2. OpenCV学习笔记(五十六)——InputArray和OutputArray的那些事core OpenCV学习笔记(五十七)——在同一窗口显示多幅图片 OpenCV学习笔记(五十八)——读《Mast
  3. 轻轻松松明白什么是反射,反射有什么用,简单上手反射以及反射的优缺点
  4. 初学总结--------Java修饰符与修饰关键字(且叫修饰关键字)
  5. 基于visual Studio2013解决C语言竞赛题之1010计算
  6. Drupal 忘记密码怎么办?重设管理员密码的几种方法
  7. 问题六十八:BRDF——(着色模型(shading model)(1)——反射模型(reflection model)(3.2))
  8. vs2012 设置默认的 include 目录
  9. 一起学Android之Storage
  10. linux下protobuf-c的安装
  11. Tomcat中的ResourceBundle国际化解析
  12. 测试额外任务而撒旦法 速度速度发撒旦法
  13. 计算机网路基础课后习题答案 主编刘建友
  14. 《超级演说家》刘媛媛:寒门贵子
  15. 开发智力的好东西~~~给孩子玩
  16. 目标检测 - 特征检测器比较
  17. go语言实现的一个基于go-zero框架的微服务网盘系统butane-netdisk
  18. (C70)第九夜:血色终结 Blood -over- 汉化补丁
  19. 解魔方机器人系列(一)kociemba算法
  20. c语言编写简易打飞机游戏

热门文章

  1. 樱桃键盘cherry G80-3000不完全拆解
  2. 一家之言:说说 JavaScript 的类成员的访问控制
  3. el-checkbox多选框点击第一次不能勾选,第二次才会勾选
  4. 实时油价接口 按城市检索加油站
  5. 搭建 Mellanox ConnectX-3 EN 10/40 Gbps 网卡 DPDK 运行环境
  6. 二分查找【思路】【递归】
  7. canvas绘制图片
  8. 使用OpenCV和C++实现的分水岭算法(Watershed)
  9. 读书笔记-《我的第一本算法书》
  10. python期中考试试卷分析_最新期中考试试卷分析与反思