全部的数据类型:
  基本数据类型:
    undefined
    Number
    Boolean
    null
    String
  复杂数据类型:
    object

①Undefined:
>>>声明但未初始化的变量:typeof -> undefined
               aler -> undefined
   未声明变量:       typeof -> undefined
              alert -> 报错

②Null:
  >>>typeof值为null的变量返回object
  >>>undefined派生自null,undefined==null返回true;

③Boolean:
  >>>Boolean()函数:
    1.Boolean:ture false
    2.String:非空字符串都为真,空字符串为假
    3.Number:0为假,一切非0均为真
    4.null/NaN/undefined:全为假
    5.object:null为假,其他全为真

④Number:
>>>NaN:与任何值都不相等,包括NaN
>>>isNaN():
  1.纯数字字符串:false
  2.浮点型数字字符串:false
  3.包含字母等其他字符的字符串:true
  4.空字符串:false
  5.bool类型,false
  6.Null类型:false
  7.undefined:true

>>>Number():将其他类型转换为数值类型
  [字符串类型转数值]
  >>>字符串为纯数值字符串时,会转为对应的数值
  >>>字符串为空字符串时,会转为0 ""-> 0
  >>>字符串包含其它非数字字符时,不能转换"111a"->NaN
  >>>浮点型数字字符串,转为对应浮点数

  [Boolean转数值]
  true->1 false->0

  [null/undefined转数值]
  null ->0 undefined的变量 ->NaN

  [object类型转数值]
  会先调用valueOf函数确定函数是否有返回值,再根据上述情况转换返回值

>>>parseInt():将其他类型转为浮点数数值类型
    [将字符串转化为数值类型]
原理:   1.忽略空格找到第一个非空格字符,如果不是数字或者负号返回NaN,所以空字符串为NaN(Number()返回0)
    2.直到解析到结束,或遇到非数字字符(小数点是非数字字符)
    3.返回所有被解析成功的字符。
    >>>空字符串, 不能转:结果为NaN!!!
    >>>纯数字字符串 能转 "123" ->123
    >>>浮点型数字字符串:"123.5"->123
    >>>包含其他字符的字符串,会截取第一个非数值字符前的数字部分
        "123a456"->123
        "a123a456"->NaN
    >>>parseInt()只能转string和number类型,Boolean/null/undefined均为NaN
    >>>number类型的浮点型转为整数型,整数型不变

>>>parseFloat():
原理: 1.忽略空格找到第一个非空格字符,如果不是数字或者负号返回NaN,所以空字符串为NaN(Number()返回0)
    2.直到解析到结束,或遇到非数字字符(小数点是非数字字符)
    3.返回所有被解析成功的字符。
    [将字符串转为数值]
    >>>使用方式同parseInt(),但是,转化小数字符串时,保留小数点。
    [传进来的参数为number]
    >>>number类型,浮点型不变,整型返回整型。

⑤String:
  [将其他类型转为字符串方法]
  ①number,bool,object调用使用toString()方法;num.toString();
  ②null,undefined没有toString()方法,使用String()函数:String(value);
  ③让一个空字符串加此变量 -> ''+value

⑥Object:

操作符:
  ①自增++,自减--操作符:
    >>>对于非数值操作数也是先使用Number()函数进行类型转换,在执行+1-1操作
    1.字符串:可转,转为数字,然后+1,字符串变量变为数值变量。
           不可转,将变量值设为NaN,字符串变量变为数值变量。
    2.布尔值:true -> 1 然后加减1
           false -> 0 然后加减1
    3.数值型:浮点型和整型直接加减1

  ②一元加、减操作符
    >>>在非数值前使用上述两个操作符,规则与Number()相同。
    >>>一元减操作符会将数值变为负

  ③布尔操作符:一共有三个 非 ! 与&& 或||
    >>>逻辑非:它应用于任何数据类型,返回值均为布尔类型。
           它首先将操作数转换为一个布尔值,然后求反。
      >>>规则如下:
        1.对象 -> false
        2.字符串:空字符串 -> true
              非空字符串 -> false
        3.数值 0 -> true
           非0数值 -> false
        4.null/NaN/undefined -> true
      >>>同时使用两个逻辑非操作符,等同于使用Boolean()

    >>>逻辑与:它可以应用于任何类型的操作数。
           当有一个操作数不是布尔类型,返回值不一定是布尔值。
      >>>规则如下:
        1.如果第一个操作数是对象,返回第二个操作数。
        2.如果第二个操作数是对象,只有在第一个操作数求值结果true的情况下,才会返回该对象。
        3.如果两个操作数都是对象,返回第二个操作数。
        4.如果有一个操作数是null/NaN/undefined,返回null/NaN/undefined.
      >>>逻辑与操作是短路操作:
        只要遇到结果为false的操作数,无论后面是什么,都将不在求值,直接返回false。

    >>>逻辑或:它可以应用于任何类型的操作数。
           当有一个操作数不是布尔类型,返回值不一定是布尔值。
      >>>规则如下:
        1.如果第一个操作数是对象,返回第一个操作数。
        2.如果第一个操作数的求值结果为false,返回第二个操作数。
        3.两个操作数都是对象,返回第一个操作数。
         4.如果两个操作数都是null/NaN/undefined,返回null/NaN/undefined.
      >>>逻辑与操作是短路操作:
        只要遇到结果为true的操作数,无论后面是什么,都将不在求值,直接返回true。

④乘性操作符:包括乘法、除法和取余
  规则如下:(转为number)
  1.都是数值,数值计算
  2.有NaN,返回NaN
  3.有任意一个操作数不是数值,对其调用Number(),然后比较

⑤加性操作符:(包括加法,减法)
  加法 规则如下:(任意一方为string都转为string,两方都不为string转为number)
  1.都是数值,进行算数相加
  2.有NaN,返回NaN
  3.任意一方为字符串,将非字符串转为字符串,然后进行字符串连接
    number,boolean调用toString()方法
    null,undefined使用String()函数
  4.两个操作数都为字符串,进行字符串连接
  5.两个操作符都不是string,number,则调用Number()之后进行算数相加
  6.一方为number,一方为除string以外的类型,调用Number(),然后算数相加。

减法规则如下:(转number)
  1.都是数值,算数相减
  2.有NaN返回NaN
  3.任意一个操作数不是数值,调用Number(),然后算是相减。

⑥关系操作符:(>= <= > <):(返回值为布尔型)
  关系操作符规则如下:(都为string,比较,一方不为string,两方全转为number)
  1.都是数值进行数值比较
  2.都是字符串,进行首字母字符编码比较
  3.一方是number,将另一方转为number
  4.有布尔值、null、undefined,先转为number再判断
  5.任何NaN参与的关系比较,返回false

⑦相等操作符:== !=(返回值为布尔型)
  == !=规则如下:(一方不为string,string bool转为number再判断,null,undefined无论如何都不转)
  1.有布尔值,先转为number,再判断
  2.字符串和数值、布尔比较,将字符串转为数值
    字符串和字符串之间直接比较
    数值和数值直接比较
  3.null和undefined永远相等
  4.不将nu时ll和undefined进行任何转换
  5.有NaN参与,==返回false,!=返回true

  === !==
    undefined === null ×
    类型必须一致,且相等才能成立

    typeof操作符:
      ①未定义->undefined
      ②字符串->string
      ③true/false->boolean
      ④数值->number
      ⑤函数->function
      ⑥对象/null->object
      >>>相比于数据类型,少了null,多了function
      >>>在ECMAScript中,函数是对象,不是一种数据类型。
        然而函数有一些特殊的属性,因此通过typeof操作符区分函数和对象还是有必要的。
      >>>对声明但未初始化和未声明的变量进行typeof操作结果都为undefined
         但是alert未初始化返回undefined
           alert未定义会报错。

JavaScript基础篇详解的更多相关文章

  1. 【HANA系列】【第一篇】SAP HANA XS使用JavaScript数据交互详解

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列][第一篇]SAP HANA XS ...

  2. 从mixin到new和prototype:Javascript原型机制详解

    从mixin到new和prototype:Javascript原型机制详解   这是一篇markdown格式的文章,更好的阅读体验请访问我的github,移动端请访问我的博客 继承是为了实现方法的复用 ...

  3. 走向DBA[MSSQL篇] 详解游标

    原文:走向DBA[MSSQL篇] 详解游标 前篇回顾:上一篇虫子介绍了一些不常用的数据过滤方式,本篇详细介绍下游标. 概念 简单点说游标的作用就是存储一个结果集,并根据语法将这个结果集的数据逐条处理. ...

  4. python 3.x 爬虫基础---Urllib详解

    python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 前言 爬虫也了解了一段时间了希望在半个月的时间内 ...

  5. 【HANA系列】SAP HANA XS使用JavaScript数据交互详解

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Jav ...

  6. [转]JavaScript异步机制详解

    原文: https://www.jianshu.com/p/4ea4ee713ead --------------------------------------------------------- ...

  7. JavaScript(4)---BOM详解

    JavaScript(4)---BOM详解 之前写过一篇有关DOM的博客:JavaScript(2)---DOM详解 DOM有个顶级对象叫:document.同样BOM中也有顶级对象叫 window. ...

  8. Python基础知识详解 从入门到精通(七)类与对象

    本篇主要是介绍python,内容可先看目录其他基础知识详解,欢迎查看本人的其他文章Python基础知识详解 从入门到精通(一)介绍Python基础知识详解 从入门到精通(二)基础Python基础知识详 ...

  9. 一步步学习javascript基础篇(0):开篇索引

    索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...

随机推荐

  1. 2019-11-29-msbuild-项目文件常用判断条件

    title author date CreateTime categories msbuild 项目文件常用判断条件 lindexi 2019-11-29 08:36:48 +0800 2019-7- ...

  2. 解释c# Peek 方法

    peek是用来确定你read的文件是否结束了,如果结束了会返回int型 -1 , 举个例子,你可以在输出每一行之前检查一下文件是否结尾,如果没结束就输出此行. StreamReader sr = ne ...

  3. vue修改富文本中的元素样式

    富文本编辑器目前应用很广泛,而有时候我们想要对其中的一些元素的样式进行修改,就会遇到问题. 首先,直接修改是不可行的,因为是用v-html标签进行渲染的,无法直接获取到. 在修改的时候,一般是按标签进 ...

  4. Vue基础第二章

    1.数据绑定与数据声明 Vue中的数据绑定就是让与Vue实例绑定的DOM节点或script标签内的变量之间数据更新互相影响,即数据绑定后Vue实例的数据修改会使DOM节点的数据或者script标签内的 ...

  5. 一、Linux 设备驱动介绍及开发环境搭建

    1.1 Linux 设备驱动介绍 1.1.1 分类及特点 计算机系统的硬件主要由 CPU.存储器和外设组成. 当前 CPU 内部都集成有存储器和外设适配器. 外设适配器有入 UART.IIC 控制器. ...

  6. Java并发编程实战 第4章 对象的组合

    Java监视器模式 java监视器模式就是在将共享的数据封装在一个类里面,然后然后所有访问或者修改这些数据的方法都标注为synchronize. 车辆追踪模拟: 使用监视器模式: CarTracker ...

  7. 前端每日实战:157# 视频演示如何用纯 CSS 创作一个棋盘错觉动画(实际上每一行都是平行的)

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/VEyoGj 可交互视频 此视频是可 ...

  8. SpringMVC的数据转换&&数据格式化&&数据校验

    1 SpringMVC的数据绑定流程 SpringMVC将ServletRequest对象及目标方法的入参实例传递给WebDataBinderFactory实例,以创建DataBinder实例对象. ...

  9. k-means伪代码

    1.初始化k个簇中心. 2.更新所有样本点簇归属:样本点到哪个簇中心点最近就属于哪个簇. 3.重新计算每个簇的中心点(直到簇中心点不再变化或达到更新最大次数) #k-means伪代码 import n ...

  10. Docker(1)--概述

    Docker概述 Docker是一个用于开发,交付和运行应用程序的开放平台.Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件.借助Docker,您可以以与管理应用程序相同的方式来管理 ...