前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版

JavaScript语言基础之数据类型(二)

首页2016-07-26 21:46:43Front-End
JavaScript

# 一、JavaScript中基本的数据类型

查看数据类型用:typeof 变量名

Javascript的数据类型有六种(ES6新增了第七种Symbol)

  • JS中的值有两种类型:原始类型(Primitive)、对象类型(Object)。

  • 原始类型包括:Undefined、Null、Boolean、Number和String等五种。

  • Undefined类型和Null类型的都只有一个值,即undefined和null;Boolean类型有两个值:true和false;Number类型的值有很多很多;String类型的值理论上有无数个。

  • 所有对象都有valueOf()和toString()方法,它们继承自Object,当然也可能被子类重写


  • 数值(number):整数和小数(比如1和3.14)
  • 字符串(string):字符组成的文本(比如"Hello World")
  • 布尔值(boolean):true(真)和false(假)两个特定值
  • undefined:表示 未定义 或不存在,即此处目前没有任何值
  • null:表示空缺,即此处应该有一个值,但目前为空
  • 对象(object):各种值组成的集合

通常,我们将数值、字符串、布尔值称为原始类型(primitive type)的值,即它们是最基本的数据类型,不能再细分了。而将对象称为合成类型(complex type)的值,因为一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。至于undefined和null,一般将它们看成两个特殊值


# 二、数据类型的转换

  • 转换函数

  • toString() 转换为字符串,在JavaScript中所有数据类型都可以转换为string类型

```javascript
    var n1 = 12;
    var n2 = true;
    var a = [1, 2, 3];
    var o = {};
    function f(){}
    n1.toString(); //"12"
    n2.toString(); //"true"
    a.toString(); //"1,2,3"
    o.toString(); //"[object Object]"
    f.toString(); //"function f(){}"
```
  • parseInt() 解析出一个string或者number类型的整数部分,如果没有可以转换的部分,则返回NaN(not a number)
```javascript
    var n1 = "12";
    var n2 = "23hello";
    var n3 = "hello";
    parseInt(n1); //12
    parseInt(n2); //23
    parseInt(n3); //NaN
```
  • parseFloat() 解析出一个string的浮点数部分,如果没有可以转换的部分,则返回NaN(not a number)
```javascript
    var n1 = "1.2.3";
    var n2 = "1.2hello"
    var n3 = "hello"
    parseFloat(n1); //1.2
    parseFloat(n2); //1.2
    parseFloat(n3); //NaN 
```
  • 强制类型转换

    • Boolean(value)- 把给定的值转换成Boolean型

          Boolean(123); //true
          Boolean(""); //false
          Boolean([]); //true
          Boolean({}); //true
          Boolean(null); //false
          Boolean(undefined); //false
      
      @前端进阶之旅: 代码已经复制到剪贴板
    • Number(value)-把给定的值转换成数字(可以是整数或浮点数)

          Number("123"); //123
          Number("123h"); //NaN
          Number(true); //1
          Number(false); //0
          Number(undefined); //NaN
          Number(null); //0
          Number([]); //0
          Number({}); //NaN
      
      @前端进阶之旅: 代码已经复制到剪贴板
  • String(value)- 把给定的值转换成字符串

        String(123); //"123"
        String([1,2]); //"1,2"
        String(undefined) //"undefined"
        String(null) //"null"
        String({}) //"[object Object]"
    
    @前端进阶之旅: 代码已经复制到剪贴板
  • 隐式转换

    • 数字+字符串:数字转换为字符串 console.log(12+"12"); //1212
    • 数字+布尔值:true转换为1,false转换为0 console.log(12+true); //13
    • 字符串+布尔值:布尔值转换为true或false console.log("hello"+true); //hellotrue
    • 布尔值+布尔值 console.log(true+true); //2
  • null和undefined

    • undefined 表示一种未知状态,声明了但没有初始化的变量,变量的值时一个未知状态。 访问不存在的属性或对象window.xxx)方法没有明确返回值时,返回值是一个undefined.当对未声明的变量应用typeof运算符时,显示为undefined。
    • null表示尚未存在的对象,null是一个有特殊意义的值。可以为变量赋值为null,此时变量的值为“已知状态”(不是undefined),即null。(用来初始化变量,清除变量内容,释放内存)

    undefined==null //结果为true,但含义不同。 undefined===null //false,两者类型不一致,前者为“undefined”,后者为“object”

# 总结一下==运算的规则:(隐式转换)


  • undefined == null,结果是true。且它俩与所有其他值比较的结果都是false。

  • String == Boolean,需要两个操作数同时转为Number。

  • String/Boolean == Number,需要String/Boolean转为Number。

  • Object == Primitive,需要Object转为Primitive(具体通过valueOf和toString方法)


# 附录:思维导图总结

fe
  • 一、JavaScript中基本的数据类型
  • 二、数据类型的转换
  • 总结一下==运算的规则:(隐式转换)
  • 附录:思维导图总结

← JavaScript语言基础之函数基础(六)JavaScript语言基础之变量(一) →