一、数据类型介绍: undefined null NaN

 1、判断当前变量是否为 undefined: if (i === undefined) 或者 if (typeof (i) === "undefined")

    未初始化的变量默认会取得 undefined 值。而未声明的变量只有使用 typeof 不会出错,其余情况下都会出错。

    例子: var message;

        alert(message); // "undefined"

        alert(message1); // 错误

        alert(typeof (message)); // "undefined"

        alert(typeof (message1)); // "undefined"

 2、判断当前变量是否为 null : if (i === null) null 的类型为object,表示的是一个空对象指针。

 3、注意 === 要求两边的值以及类型都一样。而==只要求两边的值一样 故 “1”==true 返回的是 true 而 “1”===true 返回的是 false)。

 4、undefined 是为了定义未初始化的变量或者未声明的变量,而null 值是为了保存对象。

    所以当想用一个变量存储对象时 可以这样: var car = null;

    而声明普通变量而且想使用它存储字符串时 可以这样: var message = "message"; // 如果想用 message 存储 数字,应该这样 var message = 0;

 5、涉及NaN 的所有操作返回结果都为 NaN。 与判断 NaN 使用函数 isNaN(返回结果为bool值 true 或者 false): if(isNaN(0 / 0)) 返回结果true。NaN的数据类型为 number 它不与任何数值相等,包括它自己。

   isNaN 可以适用于任何变量,只要该变量可以转化成数值,则返回false。

  alert(isNaN("1")); // false

  alert(isNaN(true)); //false

  alert(isNaN("blue")); // true

  所以判断一个变量是否为 NaN,判断条件为 var test;  if(isNaN(test)&&typeof(test)==="number"){}

二、数据类型介绍: Boolean

  Boolean 类型只有两个值:true false。 任何数据类型都可以转换成 Boolean 类型(使用函数 Boolean())。在 IF 等控制语句中会自动执行相应的转换。

  undefined 和 null 只能转换为 false

0 和 Nas 转化成 false ,其余均为 true

  空字符串转换为 false,其余均为true

  Object 转换为 true

三、数据类型介绍: Number

 1、几个特殊数值的计算:

      alert(0/0); // NaN

      alert(0/1);// 0

      alert(1/0); // Infinity

      alert(-1/0); // -Infinity

      可以使用函数 isFinite() 验证数值是不是位于 -Infinity 与 Infinity 之间。

2、数值中的整数可以用 10进制 8进制 16进制表示。

     例如:11

      十进制表示是11

    八进制表示是 013

    十六进制表示是 0xb 或者 0xB

    八进制在严格模式下会报错,建议不要使用。如果八进制字面值中的数字超出了范围,将被解析成十进制,例如 018,将被解释为 18.

 3、浮点数必须包含一个小数点,而且小数点后必须至少有一位数字。

      var float1 = 1.0; // 有效 但是会被存储为整数 1

      var float1 = 1.; // 有效 但是会被存储为整数 1

      var float2 = 1.1;  //有效浮点数

      var float3 = .1; // 有效,被解释称 0.1 但是不推荐。

     对于极大或者极小的数值,使用e表示法。例如: var float4 = 3.14e2; 或者 var float5 = 3.14E2 表示的就是 3.14 × 102  即 314。

 4、浮点数的计算

      alert((0.1+0.2)==0.3) 返回的结果为 false,因为 0.1+0.2 的计算结果为 0.30000000000000004 这是因为计算机是先把0.1 和 0.2 转换成二进制再进行计算,而javaScript 没有处理这种精度误差,所以会出现这样结果。

      解决精度问题:      

        Math.formatFloat = function (f, digit) {

          var m = Math.pow(10, digit);
          return parseInt((f * m)) / m;
        }

        alert(Math.formatFloat(0.1 + 0.2, 1)); // 0.3

      将计算结果先转化为整数,再除以幂次。

      其他方法参考文章 JavaScript精度计算

 5、有三个函数可以把非数值转换为数值。

      ㈠ Number() 可转换整数和浮点数

        alert(Number()); //0      

        alert(Number(null)); //0
        alert(Number(undefined)); //NaN
        alert(Number(NaN)); //NaN NaN 是数值型,所以返回自己

        alert(Number(true)); //1
        alert(Number(false)); //0 Boolean 的转换       

        alert(Number("")); //0 空字符返回0

        alert(Number("-1"));  // -1

        alert(Number("012")); //12 对于纯数字的字符串将其转为十进制返回        

        alert(Number("1.12")); //1.12
        alert(Number(".1")); //0.1
        alert(Number("1.0")); //1 对于带小数点的纯浮点数,返回对应的浮点值

        alert(Number("0xa")); //10
        alert(Number("0x12")); //18
        alert(Number("0x1h")); //NaN 对于包含有效十六进制的字符串,返回对应的十进制值

        alert(Number("123abc")); //NaN
        alert(Number("a123")) //NaN
        alert(Number("A")); //NaN 其余字符串均返回 NaN

      ㈡ parseInt(value,radix) 主要是对字符串进行整数转换

        参数value  需要转换的变量  radix 转换基数(多少进制)

        对于非字符串的 null undefined NaN true false  转换结果均为 NaN        

        alert(parseInt("")); //NaN  
        alert(parseInt("abc123")); //NaN 转换字符串时寻找第一个非空字符,如果没有或者不是数字或者不是 - 则返回NaN

        alert(parseInt("-123-456")); //-123 转换字符串时寻找第一个非空字符 - 直遇到一个非数字字符 -  返回之前的 -123
        alert(parseInt("123abc456")); //123 // 遇到第一个非空字符 1 解析后续字符,直遇到一个非数字字符 a  返回之前的 123        

        alert(parseInt(100)); //100
        alert(parseInt(100.58)); //100  无法解析小数点 返回 100

        由于 ES 解析的差异,我们需要添加第二位参数: 转换基数

        例如 alert(parseInt(070)); // ES3认为其为8进制 返回 56  而 ES5 认为其为十进制 忽略前导0 返回 70        

        alert(parseInt("012", 10)); //12 十进制 忽略前导0 返回12
        alert(parseInt("012", 8)); //10  八进制,返回 1×8 + 2 = 10
        alert(parseInt("012", 16)); //18 十六进制,返回 1×16 + 2 = 18

        加上第二个参数后,八进制前面的数字 0 以及十六进制前面的 0x 可以省略    

        alert(parseInt("0xa")); //10
        alert(parseInt("a", 16)); //10
        alert(parseInt("a")); //NaN 没有加第二个参数,当作普通字符串处理

      ㈢ parseFloat(value) 也主要是处理对字符串的转换 只有一个参数

        它转换的字符串可以包含小数点.

        它只解析十进制数,其他进制数返回0        

        alert(parseFloat("1234blue")); //1234 (整数) 
        alert(parseFloat("0xA")); //0  只解释十进制
        alert(parseFloat("22.5")); //22.5
        alert(parseFloat("22.34.5")); //22.34
        alert(parseFloat("0908.5")); //908.5
        alert(parseFloat("3.125e7")); //31250000

        alert(parseFloat(".5")); //0.5
        alert(parseFloat("1.5e3F")); //1500
        alert(parseFloat("1.5ea3")); //1.5 从非空处(- . 数字开头)开始解析,到遇见一个无效的浮点数为止

        

JavaScript 入门教程四 语言基础【2】的更多相关文章

  1. JavaScript 入门教程四 语言基础【3】

    一.数据类型介绍: String 1.是使用 Unicode 字符组成的字符序列.所以可以容纳各种语言. 2.字符串可以使用双引号(“”)或者单引号('')表示,但必须成对出现. 3.转移序列使用 \ ...

  2. JavaScript 入门教程三 语言基础【1】

     一.基本介绍 1.JavaScript 是一种区分大小写的语言.(var Hello 与 var hello 是不同的变量) 2.JavaScript 中标志符就是指变量.函数.属性的名字,或者函数 ...

  3. Java入门教程二(语言基础)

    常量与变量 常量值又称为字面常量,它是通过数据直接表示 常量 实型常量值 Java 的实型常量值主要有如下两种形式 十进制数形式:由数字和小数点组成,且必须有小数点,如 12.34.-98.0 科学记 ...

  4. 无废话ExtJs 入门教程四[表单:FormPanel]

    无废话ExtJs 入门教程四[表单:FormPanel] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在窗体里加了个表单.如下所示代码区的第28行位置,items:form. ...

  5. Android Studio系列教程四--Gradle基础

    Android Studio系列教程四--Gradle基础 2014 年 12 月 18 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzhang ...

  6. Elasticsearch入门教程(四):Elasticsearch文档CURD

    原文:Elasticsearch入门教程(四):Elasticsearch文档CURD 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...

  7. JasperReports入门教程(四):多数据源

    JasperReports入门教程(四):多数据源 背景 在报表使用中,一个页面需要打印多个表格,每个表格分别使用不同的数据源是很常见的一个需求.假如我们现在有一个需求如下:需要在一个报表同时打印所有 ...

  8. ArcGIS API for JavaScript 入门教程[0] 目录

    随时翻看. 转载注明出处,博客园/CSDN/B站:秋意正寒. Part 1 必看 ArcGIS API for JavaScript 入门教程[1] 渊源 你还真不一定知道这是啥.非得学吗? ArcG ...

  9. PySide——Python图形化界面入门教程(四)

    PySide——Python图形化界面入门教程(四) ——创建自己的信号槽 ——Creating Your Own Signals and Slots 翻译自:http://pythoncentral ...

随机推荐

  1. 前端XSS攻击和防御

    xss跨站脚本攻击(Cross Site Scripting),是一种经常出现在web应用中的计算机安全漏洞,指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会 ...

  2. 【原创】Redux 卍解

    Redux 卍解 Redux - Flux设计模式的又一种实现形式. 说起Flux,笔者之前,曾写过一篇<ReFlux细说>的文章,重点对比讲述了Flux的另外两种实现形式:『Facebo ...

  3. Python系统命令操作

    系统命令 1.call 执行命令,返回状态码 ret = subprocess.call(['ls', '-l'], shell=False) ret = subprocess.call('ls -l ...

  4. Ubuntu 16.04 安装 Apache, MySQL, PHP7

    1.安装之前先更新系统 1 sudo apt update 2.安装Apache2 1 sudo apt install apache2 3.安装PHP 1 sudo apt install php ...

  5. Redis Sentinel机制与用法说明【转】

    本文来自:https://segmentfault.com/a/1190000002680804 概述 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Ma ...

  6. C# 获取时间差状态

    /// <summary> /// 根据时间获取时间状态 /// </summary> /// <param name="dt"></pa ...

  7. 面向切面编程AOP

    本文的主要内容(AOP): 1.AOP面向切面编程的相关概念(思想.原理.相关术语) 2.AOP编程底层实现机制(动态代理机制:JDK代理.Cglib代理) 3.Spring的传统AOP编程的案例(计 ...

  8. Received an invalid response. Origin 'null' is therefore not allowed access

    Received an invalid response. Origin 'null' is therefore not allowed access. 今天在做二级联动,使用ajax请求xml数据, ...

  9. 【Java EE 学习 32 下】【JQuery】【JQuey中的DOM操作】

    一.JQuery中的DOM操作. 什么是DOM:DOM是一中和浏览器.平台.语言无关的接口,使用该接口可以轻松访问页面中所有的标准组件.DOM简称文档对象模型,是Document Oject Mode ...

  10. APP切图标记PS的外挂神器-Assistor PS(转)

    目前APP设计师们对Assistor PS 可是好评连连,说是切图仔的福音或救星.确实是这样的. 与其他切图标记软件不同的是,Assistor PS 是完全独立于 PS 本身的,说是一个外挂更加合适, ...