javascript数据类型详解

原创 2017年09月13日 20:19:28

ECMAScript中数据类型:

一、五种基本数据类型:

undefined 、null、boolean、number、string

二、一种复杂数据类型:

object

三、数据类型的检测:(写法:typeof(message) | typeof message)

undefined: 值未定义
Boolean:布尔类型值
string:字符串类型值
number: 数字型值
object:对象或者null(数组也是对象的一种,null会被认为是空对象的引用)
function: 函数

chrome控制台打印结果如下:

typeof k //"undefined" k是未声明变量
typeof true //"boolean"
typeof '123' //"string"
typeof 123 //"number"
typeof {} //"object"
typeof [] //"object"
typeof null //"object"
typeof function(){} //"function"

四、各类型详解:

1、undefined:

undefined类型只有一个值,即特殊的undefined。在使用var声明变量但是未对其加以初始化时,变量的值是undefined。
引入undefined主要是为了区分空对象指针与未经初始化的变量。
注意:值为undefined的变量与尚未定义的变量大不相同!
var message;//变量声明

console.log(message); //undefined
console.log(age); //报错 ,age是未声明的变量

console.log(typeof message);//undefined
console.log(typeof age);//undefined 未声明的变量这里返回为undefined类型。

//如果我们习惯性的在定义变量的时候将其初始化,可以断定此时返回undefined的原因是变量未定义。

2、null

null是第二个只有一个值的类型,从逻辑角度上来看,null表示一个空指针对象。
如果定义的变量准备在将来用于保存对象,最好将其初始化为null。
或者在一个对象准备弃用,为了避免后续开发人员误用,也可以将其定义为null。

注意: 
console.log(null==undefined);//true 两者有这样的关系,但是两者的用法完全不一样。

3、boolean

boolean是ECMAScript中使用最多的一种类型,该类型有两个字面量的值:true & false。
注意:
(1)这两个值与数字值不是一回事。true不一定表示1,false不一定表示0。
(2)true与false区分大小写。True和False都只是标识符,都不是boolean值。
(3)所有ECMAScript的值都与Boolean值有等价的值。可以用Boolean()转型函数来获取。

不同值类型转化的值类型结果:

数据类型 转换为true的值 转化为false的值
boolean true false
string 任何非空字符串 “”
number 任何非零数值 0
object 任何对象 null
undefined undefined

4、number

number类型使用IEEE754格式来表示整数和浮点型数值。

(1)整数:

最基本的是数值字面量格式是十进制整数 :
var intNum = 55;

八进制整数:
var intNum1 = 070;//十进制的56。八进制的数要以0开头。格式为0 + (0~7)。严格模式下八进制字面量是无效的。会导致javascript引擎报错。

十六进制整数:
var intNum2 = 0xA;//十六进制的10。格式为0x + (0~9)|(a~f)|(A~F),大小写字母表示的含义相同。

注意:
(1)在进行算数计算时,所有的八进制和十六进制表示的数值最终将转化成为十进制的数值进行计算。
(2)javascript中的0,可以表示为正零(+0)和负零(-0)。并且二者相等。
     console.log(+0 === -0);//true

(2)浮点型:

浮点型的数据占据的内存是整型的两倍。如果浮点型数值本身是一个整数,那么会自动转换为整数(如3.0)。
var floatNum1 = 1.0;//解析为1
var floatNum1 = 10.;//解析为10

科学计数法表示浮点型数值:
var floatNum = 3.125e7;// 3.15 * 10^7

默认情况下,ECMAScript会将那些小数点后面的带有6个以上的0自动转化为以e表示的数值。(例如0.0000003会被转成3e-7)。

浮点型数值的最高精度是17位小数。但是计算精度上远不如整数。比如:
0.1 + 0.2 = 0.30000000000000004; //会产生一定的舍入误差,这是IEEE754数值浮点计算的通病T-T

NaN是是非数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(避免抛出错误,从而影响其他代码的执行)。
注意:
(1)任何涉及NaN的运算,返回结果都是NaN。
(2)其次NaN与任何值都不相等包括自身。
     console.log(NaN == NaN) //false
     console.log(NaN === NaN) //false
(3)ECMAScript定义了isNaN()函数,来判断一个变量是否为NaN。该函数会接受任意类型的值,并且首先试图将其转换成数字。如果能转成,则返回false(表示不是NaN),否则返回true(为NaN).
    console.log(isNaN(NaN);//true
    console.log(isNaN(10);//false   
    console.log(isNaN('10');//false   转化成数字10 ,再判断。
    console.log(isNaN('blue');//true  blue不能转化为数字
    console.log(isNaN(true);//false  转化为1

数制转换:
有三个函数可以将非数值转化为数值。
(1)number() 可以将任何数值类型转化为数字类型。
(2)parseInt() 可以将字符串转化为整型数值。
(3)parseFloat() 可以将字符串转化为浮点型的数值。

注意:number()转化成数字的规则如下:
(1)如果是boolean类型,true和false将会被转换成 1和0;
(2)如果是数字,只是单纯的输入和传出。
(3)如果是null值,则返回0;
(4)如果是undefined,返回NaN;
(5)如果是字符串,则有一定的转换规则,见如下的例子。
(6)如果是对象,则调用对象的valueOf(),然后依照前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString()方法,然后再依次按照前面的规则转换返回的字符串值。

    //关于number()
    console.log(Number('hello world'));//NaN
    console.log(Number(''));//0
    console.log(Number('00011'));//11 会忽略前面的0 进行转化
    console.log(Number(true));//1

    //关于parseInt()
    console.log(parseInt('1234blue')); //1234
    console.log(parseInt(' ')); //NaN 注意与number()方法返回值结果不同。
    console.log(parseInt('0xA'));//10 
    console.log(parseInt('22.5')); //22

    //parseInt()可以添加第二个参数,来指定第一个参数按照几进制来解析的
    console.log(parseInt("0xAF", 16)); //175 ,此时可以去掉前面表示十六进制的0x。
    console.log(parseInt("AF")); //NaN 


    //关于parseFloat()
    console.log(parseFloat('1234blue')); //1234 整数
    console.log(parseFloat(' ')); //NaN 注意与number()方法返回值结果不同。
    console.log(parseFloat('0xA'));// 0 由于parseFloat()只能解析十进制的数
    console.log(parseFloat('22.5')); //22.5
    console.log(parseFloat('33.43.5')); //33.43

5.string

字符串可以由单引号('')和双引号("")来表示.

ECMAScript中的字符串长度是不可变的。如:
    var lang = 'java';
    lang = lang + 'script';
实现过程如下:
    首先创建一个能容纳10个字符的新字符串。
    然后在这个字符串中填充'java'和'script'
    最后一步是销毁原来的字符串。'java'和'script'.

转换值的类型:
    (1)toString() 大部分值都有的方法
         var num= 10;
         console.log(num.toString());//'10'
         console.log(num.toString(2));//'1010'
         console.log(num.toString(10));//'10'
         console.log(num.toString(16));//'A'
    (2)String() 不清楚值是否为null/undefined时
         var num= 10;
         console.log(num.String(num));//'10'
         console.log(num.String(true));//'true'
         console.log(num.String(null));//'null'
         console.log(num.String(undefined));//'undefined'

6.object

创建对象的几种方式:

(1)字面量
var obj = {};
(2)构造函数
var obj = new Object();          
var obj = new Object;  //不推荐
(2)原型
Object.creat(protoype);

Object类型所具有的任何属性和方法,也同样存在于更具体的实例中。

(1)constructor: 保存着用于创建当前对象的函数.
(2)hasOwnProperty(prototyName): 用于检查给定的属性,在当前对象的实例中是否存在。
(3)isPrototypeOf(object): 用于检查 传入的对象是否为当前对象的原型。
(4)prototyIsEnumerable(prototyName): 用于检查给定的属性是否能使用for-in来进行枚举。
(5)toString():返回对象的字符串表示。
(6)valueOf():返回对象的字符串、数值或布尔值表示。
版权声明:本文为博主原创文章,未经博主允许不得转载。

javascript里面的数据类型有哪些

W3Cschool上列举的数据类型是以下七中; 1.Number; 2.String; 3.Boolean; 4.Array; 5.Undefined; 6.Null; 7.Object. 然后: E...
  • Prince_fmx
  • Prince_fmx
  • 2017年09月02日 21:21
  • 312

JavaScript数据类型隐式转换原则总结(干货!)

这篇博客对JavaScript之中数据类型隐式转换做一个总结,叙述内容如有错误望大牛们指正 js的数据类型隐式转换主要分为三种情况: 1. 转换为boolean类型 2. 转换为number类型 ...
  • siboogi
  • siboogi
  • 2016年12月15日 13:53
  • 325

JavaScript 数据类型 详解

JavaScript数据类型是很简洁的 简单数据 : undefined, null, boolean, number, string 复杂数据 : object 注 : 1> JavaScri...
  • chenshun123
  • chenshun123
  • 2018年01月11日 10:02
  • 14

JavaScript的数据类型详解

数据类型   JavaScript中有5种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和String。还有1种复杂数据类型——Object,Ob...
  • z742182637
  • z742182637
  • 2015年12月28日 10:09
  • 245

javascript typeof返回的数据类型

1-----undefined         string         boolean         number           object -------对象或者null返回的是ob...
  • u014042556
  • u014042556
  • 2016年02月20日 13:17
  • 3165

JavaScript数据类型详解

JavaScript中的数据类型分为基本类型和引用类型,其中基本类型包括:数值(整数/浮数)、字符串型(用单引号或双引括起来)、布尔型(true/false);引用类型包括:对象、数组、函数、null...
  • phoenix_17th
  • phoenix_17th
  • 2009年02月08日 14:56
  • 327

JavaScript基本数据类型和内置数据类型

基本数据类型 基本数据类型是JS语言最底层的实现。 简单数值类型: 有Undefined, Null, Boolean, Number和String。注意,描述中的英文单词在这里仅指数据类型的名称...
  • a597926661
  • a597926661
  • 2012年09月20日 15:09
  • 1304

JavaScript学习笔记2-五种原始数据类型和Object对象类型

1、每一个函数对象都有一个length属性,表示该函数期望接收的参数格式。它与函数的arguments不同,arguments.length表示函数实际接收的参数格式。 var...
  • hellochenlu
  • hellochenlu
  • 2015年08月29日 14:08
  • 936

JavaScript 数据类型详解

——跟我一起学 JavaScript (5)ECMAScript 定义了 5 种简单数据类型(Undefined、Null、Boolean、Number、String)和一种复杂数据类型(Object...
  • deniro_li
  • deniro_li
  • 2017年02月06日 15:04
  • 165

JavaScript中数据类型详解

1.Undefined类型 Undefined 类型只有一个值,即特殊的undefined。在使用var 声明变量但未对其加以初始化时,这个变量的值就是undefined,例如: var me...
  • hsd2012
  • hsd2012
  • 2016年03月21日 15:38
  • 406
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:javascript数据类型详解
举报原因:
原因补充:

(最多只允许输入30个字)