JS数据类型分为简单数据类型(基本数据类型)和复杂数据类型(引用数据类型)。

基本数据类型:Undefined、Null、Boolean、Number、String、Symbol。

引用数据类型:Object。

可以通过typeof操作符判断以上7种数据类型,语法:typeof 变量,返回值如下:

- "undefined" —— 如果这个值未定义;事实上,如果这个变量未声明,返回值也是undefined
- "boolean" —— 如果这个值是布尔值
- "string" —— 如果这个值是字符串
- "number" —— 如果这个值是数值
- "object" —— 如果这个值是对象或null
- "symbol" —— 如果这个值是Symbol函数生成的
- "function" —— 如果这个值是函数

数据类型

  1. Undefined类型

    • 只有一个值:undefined
    • 声明变量后未经初始化,则默认值是undefined;所以没必要将一个变量显性地设置为undefined
  2. Null类型

    • 只有一个值:null
    • 空对象指针
    • undefined派生自null,所以它们的相等性测试 undefined == null 返回 true
    • 与undefined不同的是,只要意在保存对象的变量还没有真正保存对象,就应该明确地让变量初始化为null
  3. Boolean类型

    • 只有两个值:true 和 false

    • 其它类型值转换为Boolean值,调用转型函数Boolean()

      数据类型 转换为true值 转换为false值
      Boolean true false
      String 非空字符串 空字符串("")
      Number 非0数字值 0和NaN
      Object 任何对象 null
      Undefined undefined
  4. Number类型

    • 字面量

      • 整数

        • 十进制:ddd,d:0~9
        • 八进制: 0ddd,d:0~7。严格模式下无效,会导致支持严格模式地JS引擎抛出错误
        • 十六进制:0xddd,d:09及AF(小写也可以)
      • 浮点数值
        • 合法写法

          • '1.1'
          • '0.1'
          • '.1' --> 0.1
          • '1.' --> 整数 1
          • '1.0' --> 整数 1
        • 极大极小值,用e表示
          • 3.125e7 --> 31250000
          • 3e-7 --> 0.0000003
        • 最大精度17位
          • 0.1 + 0.2 != 0.3
    • 数值范围
      • Number.MIN_VALUE
      • Number.MAX_VALUE
      • 超范围显示Infinity和-Infinity --> Number.POSITIVE_INFINITY和Number.NEGATIVE_INFINITY
      • 函数isFinite():参数在极小和极大之间返回true,否则false
    • NaN
      • Not a Number
      • NaN == NaN 返回 false
      • 函数isNaN():参数先被转换成Number类型,转换后的结果是NaN返回true,否则false;参数是对象,会先调用valueOf()方法,如果返回值能转换为数值,则进行测试,否则再调用toString()方法,进行测试
    • 数值转换
      • Number()

        数据类型 Number()转换后结果
        Boolean 1和0
        Number 无变化
        Null 0
        Undefined 0
        String 只包含数字(包括前面带正号或负号的情况)--> 十进制数值,如"-123" --> 123,"077" --> 77(不会被认为是八进制);
        有效浮点格式 --> 浮点值;
        十六进制(0x) --> 十进制数值;
        其它 --> NaN
        Object valueOf()→若是NaN(比如Object对象)→toString()→再按以上规则
      • parseInt()

        • 字符串从前往后取数字(符合整数格式),碰到非数字停止
        • 第二个参数指定进制,如8,10,16
      • parseFloat()

        • 同上(符合浮点格式)
      • 注:valueOf()

        • 对象原型方法:返回对象的原始值。
        • 查看对象的原始值办法



  5. String类型

    • 字符:16位Unicode
    • "" 或 ''
    • 转义字符:\
    • 其它类型转换为String类型
      • toString()

        • Boolean、Number、String、Object都有toString()方法
        • Null、Undefined没有toString()方法
        • Object.prototype.toString.call():可以查看数据类型
      • 转型函数String()
        • 有toString()方法的调用toString()
        • null --> "null"
        • undefined --> "undefined"
    • 字符串拼接
      • 新开辟空间,拼接字符串,删除原字符串
  6. Symbol类型

    • ES6引入的一种新的原始数据类型Symbol,表示独一无二的值
    • 通过Symbol()函数生成,可传入参数用作描述
    • 应用:保证属性名独一无二,防止属性名冲突



    • Symbol()生成的属性名不能被for...in,for...of,Object.keys()、Object.getOwnPropertyNames()、JSON.stringify()访问到,但可以用Object.getOwnPropertySymbols(obj)获取
    • Reflect.ownKeys(obj)也可以返回所有类型的键名,包括常规键名和Symbol键名
  7. Object类型

    • Object 就是一组数据和功能的集合
    • 所有对象的基础,如Function、Array、Date
    • Object每个实例都有:constructor、hasOwnProperty(propertyName)、isPropertyOf(object)、propertyIsEnumerable(propertyName)、toLocaleString()、toString()、valueOf()

检测数据类型

  1. 操作符 typeof

    • 能检测出的类型:Undefined、Null、Boolean、Number、String、Object、Symbol和函数
  2. 操作符 instanceOf
    • 区分具体对象类型,如 [1,2,3] instanceof Array --> true ; 1 instanceof Number --> true
    • null、undefined不行
  3. 方法 constructor()



    • 同instanceof
  4. 方法 toString()

    • 能检测出的类型:所有

参考

  • JavaScript高级程序设计(v3)Nicholas C.Zakas著 李松峰 曹力译
  • ES6标准入门(v3)阮一峰著
  • 互联网

JS基础 —— 数据类型的更多相关文章

  1. js 基础数据类型和引用类型 ,深浅拷贝问题,以及内存分配问题

    js 深浅拷贝问题 浅拷贝一般指的是基本类型的复制 深拷贝一般指引用类型的拷贝,把引用类型的值也拷贝出来 举例 h5的sessionStorage只能存放字符串,所以要存储json时就要把json使用 ...

  2. JS基础-数据类型-运算符和表达式-变量和常量

    1.js的基础语法2.js调试 1.F12调出控制台,查看提示错误及其位置. 2.出错时只影响当前代码块,不会影响其他代码块,后续代码块继续执行.3.语法规范 1.js语句:可执行的最小单元 必须以 ...

  3. js基础--数据类型

    1,数据类型 Number:包括小数与整数,负数,NaN ,Infinity无限大String字符串:‘abc’Boolean布尔值:true or falsenull 空undefined 未定义 ...

  4. JS基础-数据类型判断typeof、instanceof、Object.prototype.toString

    typeof用在基本数据类型和函数时,返回其对应类型的描述,对于引用类型都返回为object. instanceof无法判断基本数据类型,对于引用类型数据,返回其其对应类型. Object.proto ...

  5. 前端面试题目汇总摘录(JS 基础篇)

    JS 基础 JavaScript 的 typeof 返回那些数据类型 object number function boolean undefined string typeof null; // o ...

  6. js基础--javaScript数据类型你都弄明白了吗?绝对干货

    欢迎访问我的个人博客:http://www.xiaolongwu.cn 数据类型的分类 JavaScript的数据类型分为两大类,基本数据类型和复杂数据类型. 基本数据类型:Null.Undefine ...

  7. JS基础入门篇(六)— 数据类型

    1.数据类型 数据类型:我感觉就是对数据的种类进行分类.就好比把人分为儿童,青少年,中年,老年一样. 基础数据类型: Number(数字),String(字符串),Null(空),Undefined( ...

  8. Python--前端基础之JavaScript(JS的引入方式,JS的变量、常量和标识符,JS的数据类型,运算符,流程控制,JavaScript的对象)

    JavaScript介绍 JavaScript是运行在浏览器端的脚步语言,JavaScript主要解决的是前端与用户交互的问题,包括使用交互与数据交互. JavaScript是浏览器解释执行的,前端脚 ...

  9. JS基础——脚本位置、数据类型、函数作用域

    (一)脚本位置 JavaScript是嵌套到浏览器里的脚本语言:可放在3个位置: 1.写在头部(head里) <head>    <meta charset="UTF-8& ...

随机推荐

  1. 04发送请求,将值赋给data--动态传递参数

    03==>发送青丘,将值赋给data. 注意:赋值使用的是 _this.setData({ }) 是以冒号的形式赋值, 提前保存好this data: { arrlistdata:[], }, ...

  2. MySQL实战45讲学习笔记:第十六讲

    一.今日内容概要 在你开发应用的时候,一定会经常碰到需要根据指定的字段排序来显示结果的需求.还是以我们前面举例用过的市民表为例,假设你要查询城市是“杭州”的所有人名字,并且按照姓名排序返回前 1000 ...

  3. MySQL实战45讲学习笔记:第十八讲

    一.引子 在 MySQL 中,有很多看上去逻辑相同,但性能却差异巨大的 SQL 语句.对这些语句使用不当的话,就会不经意间导致整个数据库的压力变大. 我今天挑选了三个这样的案例和你分享.希望再遇到相似 ...

  4. [LeetCode] 854. K-Similar Strings 相似度为K的字符串

    Strings A and B are K-similar (for some non-negative integer K) if we can swap the positions of two ...

  5. Ubuntu16LTS使用笔记(Server版)

    环境测试:Ubuntu Server 16.04.06 x64 虚拟机 以下均需要root权限,请sudo 或 su root 解决只有先启动Windows再重启到Linux才能使用usb网卡的问题: ...

  6. WebSocket--客户端

    WebSocket 是 HTML5 提供的一种在单个TCP连接上进行全双工通讯的协议. WebSocket 使得客户端和服务端通讯,数据交换更加简单,而且允许服务端主动向客户端发送数据.在WebSoc ...

  7. oracle--BBED (dump 深入实践三)

    一,工具介绍 bbed是Block Browser and Editor(块浏览编辑器)的缩写,它是Oracle数据库在安装时一起附带的工具. 一般此工具倾向于仅作为Oracle内部使用,且Oracl ...

  8. python脚本生成exe程序

    去年十一月换了新公司后,一直没闲着,马不停蹄地接不同的需求,一个版本一个版本的迭代,也没时间研究python了.十一休假归来,某日,老婆问金融量化需要学python吗?并分享了一个公众号文章,内容是吹 ...

  9. [BAT脚本] 1、BAT脚本FOR循环操作文件和命令返回实例

    Wednesday, 31. October 2018 08:18PM - beautifulzzzz 一.需求 需要在windows上实现一个bat脚本解析json,将json转换为自己想要的key ...

  10. 阿里云虚拟空间.net 网站错误

     Web.config 文件的 <compilation> 元素中的“targetFramework”特性仅用于目标 .NET Framework 版本 4.0 或更高版本(例如“< ...