JavaScript的数据类型

  ✍ 原始数据类型值:

  JavaScript有5中原始数据类型,通过调用typeof运算符返回值查看变量类型:

    ➣ Undefined ➔ 'undefined';

      Undefined(未定义)类型只有一个值,即undefined。当声明的变量未初始化时,该变量的默认值是undefined。

    ➣ Boolean ➔ 'boolean';

      Boolean(布尔)类型是JavaScript中最常用的类型之一。它有两个值true和false;

    ➣ Number ➔ 'number';

      JavaScript中定义最特殊的类型是Number型,这种类型既可以表示32位整型,也可以表示64位浮点数。直接输入的(而不是从另一个变量访问的)任何数字都被看做Number字面量。

    ➣ String ➔ 'string';

      String类型的独特之处在于它是唯一没有固定大小的原始类型。可以用字符串存储0或更多的Unicode字符,由16位整数表示(Unicode是一种国际字符集)。

    ➣Null ➔ 'object'(引用类型返回的也是object);

      只有一个专用值unll,即它的字面量。值undefined实际上是从值null派生来的,因此JavaScript把它们定义为相等的;

null == undefined    //返回true

❋ JavaScript中实现数据类型转换

  转化为字符串值:JavaScript定义所有对象都有toString()方法,无论它是伪对象,还是真的对象。使用toString()方法对数据进行类型转换的结果由变量的值决定。

例如:

 var test = false;    //test的字面量是Boolean类型,值为false

test.toString();     //返回的值为'false'

var numInt = 10;     //numInt是Number类型,值为10

var numfloat = 10.0; //numfloat是Number类型,值为10.0

numInt.toString();   //返回的值为'10'

numfloat.toString(); //返回的值为'10';如果numfloat的字面量是10.1,那么返回的值为'10.1'

  对于非数字的原始值,JavaScript提供了两种转换成数字的方法,即parseInt()和parseFloat(),前者把值转换成整型,后者把值转换成浮点数。只有对String类型调用这些方法,它们才能正确运行。对其他类型返回的都是NaN。

var iNum1 = parseInt('1234blasd');   //返回1234

var iNum2 = parseInt('22.5');        //返回22

var iNum3 = parseInt('0xA');         //返回10

var fNum1 = parseFloat('1234absa');  //返回1234.0

var fNum2 = vaparseFloat('22.3214'); //返回22.3214

var fNum3 = paeseFloat('0xA');       //返回NaN

  也可以强制转换:

    ➣ Boolean(value)——把给定的值转化为Boolean型;

    ➣ Number(value)——把给定的值转换成字符串;

    ➣ String(value)——把给定的值转换成字符串;

    用这三个函数之一转换值,将创建一个新值,存放由原始值直接转换成的值。

❋ Boolean型转换:

方法

结果

备注

Boolean("")

false

空字符串

Boolean('hi')

true

非空字符串

Boolean(100)

true

非0数字

Boolean(null)

false

null

Boolean(0)

false

0

Boolean(new Object())

true

对象

❋ Boolean型转换:

方法

结果

Number(false)

0

Number(true)

1

Number(undefined)

NaN

Number(null)

0

Number('2.2.5')

NaN

Number('1.5')

1.5

Number(new Object())

NaN

❋ String型转换:

  可以把任何值转换成字符串;

✍  引用数据类型值

  JavaScript库中提供了大量封装好的对象给我们使用,同时我们还可以创建自定义对象。可以分为三种类型:

  ➣ 原生对象:

    是由JavaScript所提供的、独立于宿主环境(即浏览器)的对象。简单点说,就是在ECMA-262标准中定义的对象;

  ➣ 内置对象:

    内置对象JavaScript中提供的、独立于宿主环境的对象,这些对象在JavaScript程序执行时就已经存在。内置对象实际上也是原生对象的一种,但是与原生对象不同的是,内置对象不需要显式地初始化,因为它已经初始化了,ECMA-262标准中只定义了两个内置对象:Global和Math;

  ➣ 宿主对象:

    宿主对象指与宿主环境(即浏览器)有关的对象。所有的BOM和DOM对象都是宿主对象。

我们可以用下面的表来记忆JS的基本数据类型和Java中数据类型的关系

Java类型

对应JS类型

说明

byte

number

Java包装器:Byte,父类:Number

short

Java包装器:Short,父类:Number

int

Java包装器:Integer,父类:Number

long

Java包装器:Long,父类:Number

float

Java包装器:Float,父类:Number

double

Java包装器:Double,父类:Number

char

string

Java包装器:Charset,父类:Object

string

Java中string不是基本类型,父类:Object

boolean

boolean

Java包装器:Boolean,父类:Object

✍ Object类:

  JavaScript中的所有类都是由Object类来继承的,Object类中的属性和方法都会出现在其他对象中。

  ➣ Object类具有的属性:

    Constructor——对创建对象的函数的引用(指针)。对于Object类,该指针指向原始的object()函数。

  ➣ Object类具有的方法:

    hasOwnProperty(property)——判断对象是否具有某个特定的属性。必须用字符串指定该属性。

    isPrototypeOf(object)——判断该对象是否为另一个对象的原型。

    propertyIsEnumerable(property)——判断给定的属性是否可以为for..in语句进行枚举。

    toString()——返回对象的原始字符串表示,对于Object类,ECMA-262标准没有定义这个值,所以不同的JavaScript实现具有不同的值。

    valueOf()——返回最适合该对象的原始值。对于许多类,该方法返回的值都与toString()的返回值形同。

✍ 原始数据类型包装器类:

  JavaScript中的Boolean、Number和String类分别是JavaScript原始数据类型Boolean、Number和String的包装类。这些对象在JavaScript实际编程中很少使用,所以我们最好还是使用原始值。Boolean、Number和String的所有属性和方法都可以应用在原始值上,因为他们是伪对象。

✍ Array类

  可以创建数组!创建的几种方式如下

var iArray1 = new Array();

iArray1[0] = 'a';           //给数组的下标0的内存空间赋值为'a'

iArray1[1] = 'b';          //给数组的下标1的内存空间赋值为'b'

iArray1[2] = 'c';          //给数组的下标2的内存空间赋值为'c'

var iArray2 = new Array(20);  //该数组长度为20

var iArray3 = new Array('a','b','c')   //数组共三个值,按顺序分别是'a','b','c';

✍ Date类

  Date 对象用于处理日期和时间。

  创建Date对象语法:

 var myDate = new Date();//Date对象会自动把当前日期和时间保存为其初始值

属性

描述

constructor

返回对创建此对象的 Date 函数的引用

prototype

使您有能力向对象添加属性和方法

✍ Global类:

  Global类是JavaScript中最特别的对象,它不需要声明和初始化。

✍ instanceof运算符:

  在使用typeof运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,他都会返回”object”;instanceof是由ECMAscript引入java运算符;instanceof运算符与typeof运算符相识,用于识别正在处理的对象的类型。与typeof方法不同的是,instanceof方法要求开发者明确地确认对象为某特定类型。

JavaScript总结(二)的更多相关文章

  1. 学习javascript数据结构(二)——链表

    前言 人生总是直向前行走,从不留下什么. 原文地址:学习javascript数据结构(二)--链表 博主博客地址:Damonare的个人博客 正文 链表简介 上一篇博客-学习javascript数据结 ...

  2. 初探JavaScript(二)——JS如何动态操控HTML

    除去五一三天,我已经和<JavaScript Dom编程艺术>磨合了六天,第一印象很好.慢慢的,我发现这是一块排骨,除了肉还有骨头.遇到不解的地方就会多看几遍,实在不懂的先跳过,毕竟,初次 ...

  3. 从头开始学JavaScript (十二)——Array类型

    原文:从头开始学JavaScript (十二)--Array类型 一.数组的创建 注:ECMAscript数组的每一项都可以保存任何类型的数据 1.1Array构造函数 var colors = ne ...

  4. 使用JavaScript生成二维码教程-附qrcodejs中文文档

    使用javascript生成二维码 依赖jquery 需要使用到的库 https://github.com/davidshimjs/qrcodejs DIV <div id="qrco ...

  5. 同事问如何判断同花顺,我用javascript的二维数组写了个简易demo

    有个前同事在群里问如何判断是否为同花顺我用javascript的二维数组写了个简易demo. <!DOCTYPE html> <html> <body> <s ...

  6. 2、JavaScript 基础二 (从零学习JavaScript)

     11.强制转换 强制转换主要指使用Number.String和Boolean三个构造函数,手动将各种类型的值,转换成数字.字符串或者布尔值. 1>Number强制转换 参数为原始类型值的转换规 ...

  7. Javascript面向对象二

    Javascript面向对象二 可以通过指定原型属性来对所有的对象指定属性, Object.prototype.name="zhangsan"; Object.prototype. ...

  8. QrCode C#生成二维码 及JavaScript生成二维码

    一 C#的二维码    示例: class Program { static void Main(string[] args) { QrEncoder qrEncoder = new QrEncode ...

  9. 一篇文章图文并茂地带你轻松学完 JavaScript 设计模式(二)

    JavaScript 设计模式(二) 本篇文章是 JavaScript 设计模式的第二篇文章,如果没有看过我上篇文章的读者,可以先看完 上篇文章 后再看这篇文章,当然两篇文章并没有过多的依赖性. 5. ...

  10. Javascript生成二维码(QR)

    网络上已经有非常多的二维码编码和解码工具和代码,很多都是服务器端的,也就是说需要一台服务器才能提供二维码的生成.本着对服务器性能的考虑,这种小事情都让服务器去做,感觉对不住服务器,尤其是对于大流量的网 ...

随机推荐

  1. git repo代码部署策略及工具

    一般在项目或者产品开发流程中,先是开发人员在本地做好开发及测试,其中可能包含很多用于测试用的目录以及源代码文件,在部署前往往会有一个build过程.web项目最终build产生出优化生产环境下减少ht ...

  2. 关于Nodejs开发桌面应用。NW.js 和 Electron 优缺点分析对比

    从开发角度来说,选择用 nw.js 还是 election ,区别其实不是很大.大部分工作还是在自己的 javascript 和 HTML 上.国内比较有名的,比如微信web开发工具.钉钉都是基于 n ...

  3. Inside Amazon's Kafkaesque "Performance Improvement Plans"

    Amazon CEO and brilliant prick Jeff Bezos seems to have lost his magic touch lately. Investors, empl ...

  4. 【原创】使用Java进行Clob转String字符串

    背景 oracle字段类型varchar2最大长度4000,超过的怎么办 解决 使用clob类型,大字段,无长度限制 问题 使用Java的JDBC读取的RS获取的clob类型无法正常使用,封装的rs. ...

  5. xdebug安装及使用小结

    最近安装了一下xedug,并且学习了一下如何使用.安装xdebug的初衷是为了深入研究一下PHP的垃圾回收机制. Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪, ...

  6. 记一次webservice的超时时间设置

    一次项目组中需要控制超时时间,前期习惯用CXF实现,熟悉的才是最好的.所以这次依然想用CXF实现. 实现的方式代码如下: static{ String fvpWebserviceUrl = Prope ...

  7. php四种基础排序算法的运行时间比较!

    /** * php四种基础排序算法的运行时间比较 * @authors Jesse (jesse152@163.com) * @date 2016-08-11 07:12:14 */ //冒泡排序法 ...

  8. 4514: [Sdoi2016]数字配对

    Description 有 n 种数字,第 i 种数字是 ai.有 bi 个,权值是 ci. 若两个数字 ai.aj 满足,ai 是 aj 的倍数,且 ai/aj 是一个质数, 那么这两个数字可以配对 ...

  9. [SCOI2007]组队

    嘟嘟嘟 这题有人说部分分O(n3)暴力,然而我暴力都没写过,调了半天也没用……还是看题解吧 首先,咱把A * ( h – minH ) + B * ( s – minS ) <= C 变个型,得 ...

  10. 20155314 2016-2017-2 《Java程序设计》第10周学习总结

    20155314 2016-2017-2 <Java程序设计>第10周学习总结 教材学习内容总结 了解计算机网络基础 掌握Java Socket编程 理解混合密码系统 掌握Java 密码技 ...