读书运用JavaScript的数据类型

作者 魏楷聪 发布于 2015年01月20日

一个全体的JavaScript实现是出于以下3只不同部分构成的:

a. 大旨(ECMAScript)   b. 文档对象模型(DOM)   c.
浏览器对象模型(BOM)

> JavaScript的主题ECMAScript描述了拖欠语言的语法和骨干对象

ECMAScript是一个至关紧要之正统,但它们并无是JavaScript唯一的局部,当然,也不是绝无仅有让规范的片。

ECMAScript描述了以下内容:a. 语法; b. 类型; c. 语句; d. 关键字; e.
保留字; f. 运算符; g. 对象。

ECMAScript就是一个叙述,定义了脚本语言的所有属性、方法与目的。其余的语言可以实现ECMAScript来作为职能的尺度,JavaScript就是这样。

ECMAScript并无跟另外现实浏览器相绑定,实际上,它吗不曾关系任何用户输入输出的章程。每个浏览器还产生其好的ECMAScript接口的落实,然后是实现以受扩充,包含了DOM和BOM。

> DOM描述了拍卖网页内容的艺术以及接口

DOM(文档对象模型)是HTML和XML的应用程序接口(API)。DOM将将方方面面页面规划成是因为节点层级构成的文档。HTML或XML页面的每个片都是一个节点的衍生物。

DOM通过制造树来代表文档,从而使开发者对文档的情及布局有所空前之控制力。用DOM
API可以轻松地抹、添加和替换节点。

> BOM描述了与浏览器举行互动的不二法门以及接口

BOM(浏览器对象模型),可以针对浏览器窗口举行访问和操作。使用BOM,开发者可以倒窗口、改变状态栏中的文本以及实施其余与页面内容不直有关的动作。BOM只是JavaScript实现的相同部分,没有任何有关的正规化。由于并未相关的BOM标准,每种浏览器都出和好之BOM实现。

1. 原始值和引用值

以ECMAScript中,变量可以存放两栽档次的价值,即原始值和引用值。

a. 原始值(primitive
value)是储存于库房(stack)中之简易数据段,也就是说,它们的价直接存储于变量访问的职位。

b. 引用值(reference
value)是储存在堆(heap)中之对象,也就是说,存储于变量处的价值是一个指针(point),指向存储对象的外存处。

原始类型占据的长空是定位的,将其存储在可比小之内存区域受到——栈中,便于神速查询变量的价。

引用类型的囤积空间将起堆积如山着分配。由于引用值的大小会改变,所以无克管它们置身栈中,否则会回落变量查寻的进度。相反,放在变量的栈空间中之价是该目标存储在积中的地点。地址之轻重是稳定的,所以将它存储在栈中对变量性能无论任何负面影响。

> (重点)五大原始类型(primitive type):

UndefinedNullBooleanNumberString

  1. 可以用 typeof  运算符来判断一个变量是属哪系列型:

“undefined”,变量是Undefined型

“boolean”,变量是Boolean型

“number”,变量是Number型

“string”,变量是String型

“object”,变量是同样种植引用类型或者 Null 类型

  1. Undefined 类型

偏偏出一个值,即undefined(字面量)。当讲明的变量未初步化平时,该变量的默认值是undefined。可是,值undefined并不同为无定义之值,而typeof运算符并无确分这半种植价值。

var oTemp;

// make sure this variable isn’t defind

// var oTemp2;

alert(typeof oTemp); // outputs “undefined”

alert(typeof oTemp2); // outputs “undefined”

alert(oTemp2 == undefined); // cause error

本着不定义的oTemp2使用除typeof之外任何运算符,将唤起错误,因为这个运算符只可以用于已定义的变量。

当函数无彰着再次回到值时,再次来到的价值吗是值undefined。

  1. Null 类型

才生一个值,即null(字面量)。用于表示一向不在的对象。

值undefined实际上是起值null派生来的。

alert(null == undefined);  // outputs “true”

  1. Boolean 类型

爆发少只值true和false(即有限独Boolean字面量)。

  1. Number 类型

既是可代表32位的整数,还足以表示64号之浮点数。直接输入的(而未是自从任何一个变量访问的)任何数字都被视作Number型的字面量。

平头能够为代表为八进制或十六进制的字面量,但是所有数学运算再次来到的依旧十进制结果

4858mgm,浮点数字面量必须概括小数点和小数点后的同样员数字,据此它举行总计前,真正存储的是字符串

一个奇值:NaN,表示非数(Not a Number)。

alert(isNaN(“blue”)); // outputs “true”

alert(isNaN(“123”)); // outputs “false”

  1. String 类型

String类型的与众不同的远在当吃,它是绝无仅有无稳定大小的原始类型。字符串字面量是出于双引号(”)或单引号(’)表明的。

> 四特别引用类型:Object类Boolean类Number类String类

引用来型日常为作类(class),也就是说,碰到引用值时,所处理的即是目标。ECMAScript定义了“对象定义”,逻辑上等价于其余程序设计语言中之好像。

抱有十分的原始类型的援类型:

  1. Object

Object类自身用处不死,但ECMAScript中的保有类都由是看似继承而来,Object类中的具有属性和法都会面产出于另类吃。

特性
prototype:对拖欠目的的靶子原型的援(指针)。对于Object类,该指针指向原始之object()函数。

主意
prototypeIsEnumerable(property):判断给定的性是否可就此for…in语句举行枚举。

  1. Boolean

Boolean类是Boolean原始类型的援类型。

Boolean对象将覆盖object类的valueOf()方法,再次回到原始值,即true或false。toString()方法呢会合给盖,再次来到字符串“true”或”false”。

提出少用Boolean对象,最好仍然以Boolean原始值。

// 以Boolean表明式中,所有目的还谋面吃电动转换为true

var oFlaseObject = new Boolean(false);

var bResult = oFlaseObject && true;  // outputs true

  1. Number

始建Number对象并赢得数字对象的Number原始值(valueOf()方法):

var oNumberObject = new Number(55);

var iNumber = oNumberObject.valueOf();

toFixed()方法重返的凡具备指定位数小数的数字之字符串表示:

var oNumberObject = new Number(99);

alert(oNumberObject.toFixed(2));  // outputs “99.00”

此,toFixed()方法的参数是2,表达了应该突显几乎各个小数,空的稍数位由0补充。toFixed()方法会表示具有0到20各小数的数字,超出这限制之值会引起错误。

只要可能,都用数字的原始表示法。

  1. String

String类是String原始类型的靶子表示法。

String对象的valueOf()方法以及toString()方法都会师重临String类型的原始值:

var oStringObject = new String(“hello world”);

alert(oStringObject.valueOf() == oStringObject.toString());  //
outputs “true”

String类具有属性length,它是字符串中的字符个数:

var oStringObject = new String(“hello world”);

alert(oStringObject.length);  // outputs “11”

String类还有大量之计,可以查阅API。

  1. instanceof 运算符

instanceof运算符与typeof运算符相似,用于识别正在处理的靶子的门类。与typeof方法不同之是,instanceof方法要求开发者明确地认可对象为某某一定项目。

var oStringObject = new String(“hello world”);

alert(oStringObject instanceof String);  // outputs “true”

2. 转换

> 简单的转换方法

  1. 转换成为字符串

3种要的原始值Boolean值、数字和字符串都是伪对象,都有toString()方法,可以管其的价值转换成字符串。

Boolean型的toString()方法就是出口“true”或“false”,结果由变量的值决定。

Number类型的toString()方法有少栽形式,即默认情势及基格局。

每当默认格局面临,重回的且是数字之十进制表示。

当基形式中,可以就此不同的基输出数字。

var iNum1 = 10;

alert(iNum1.toString(2));  // outputs “1010”

alert(iNum1.toString(8));  // outputs “12”

alert(iNum1.toString(16));  // outputs “A”

HTML采纳十六上制数表示每种颜色,在HTML中处理数字时这种功效特别管用。

  1. 变成为数字,只换第一个不算字符以前的字符串

parseInt():

var iNum1 = parseInt(“1234blue”);  // return 1234

var iNum2 = parseInt(“0xA”);  // return 10

var iNum3 = parseInt(“22.5”);  // return 22

var iNum4 = parseInt(“blue”);  // return NaN

parseInt()方法的基格局:

var iNum1 = parseInt(“AF”, 16);  // return 175

var iNum2 = parseInt(“10”, 2);  // return 2

var iNum3 = parseInt(“10”, 8);  // return 8

var iNum4 = parseInt(“10”, 10);  // return 10

一经十进制数包含前导0,那么最好好用基数10,这样才无相会奇怪地得到八进制的价。

parseFloat():

var iNum1 = parseFloat(“1234blue”);  // return 1234

var iNum2 = parseFloat(“0xA”);  // return 0

var iNum3 = parseFloat(“22.5”);  // return 22.5

var iNum4 = parseFloat(“22.34.5”);  // return 22.34

var iNum5 = parseFloat(“0908”);  // return 908

var iNum6 = parseFloat(“blue”);  // return NaN

> 强制类型转换(type casting)

  1. Boolean(value):把给定的值转换成Boolean型

当要变的价是最少有一个字符的字符串非0数字对象每每,Boolean()函数将回true。假诺该值是空字符串数字0undefinednull,它将再次来到false。

var b1 = Boolean(“”);  // false – empty string

var b2 = Boolean(“hi”);  // true – non-empty string

var b3 = Boolean(100);  // true – non-zero string

var b4 = Boolean(null);  // false – null

var b5 = Boolean(0);  // false – zero

var b6 = Boolean(new Object());  // true – object

Number(value):把给定的价转换成为数字(能够是整数或浮点数),转换的是所有价值

var n1 = Number(false);  // 0

var n2 = Number(true);  // 1

var n3 = Number(undefined);  // NaN

var n4 = Number(null);  // 0

var n5 = Number(“5.5”);  // 5.5

var n6 = Number(“56”);  // 56

var n7 = Number(“5.6.7”);  // NaN

var n8 = Number(new Object());  // NaN

var n9 = Number(100);  // 100

String(value):把给定的价值(任何值)转换成为字符串

强制转换成字符串和调用toString()方法的绝无仅有不同之处在于,对null或undefined值强制类型转换可以生成字符串而无抓住错误:

var s1 = String(null);  // “null”

var oNull = null;

var s2 = oNull.toString();  // won’t work, causes an error

3. 函数

函数是ECMAScript的着力。函数(function)就是目标。

即使函数无显明的回值,或调用了无参数的return语句,那么其的确再次来到的价值是undefined。

  1. 管重载:ECMAScript中之函数不可能重载,没有辙(函数)重载的定义。

  2. arguments对象:每个函数都暴发一个含的目的arguments,表示为函数实际传递的参数

  3. Function类:所有由定义之函数都是Function 对象类型的。Function
    对象吸收的所有参数都是字符串类型的,其中最终一个参数就是尽管推行之函数体,而前的参数则是函数真正用吸收的参数。

诸一个函数对象还有一个 length
属性,表示该函数期望接收的参数格式。它和函数的 arguments
不同,arguments.length 代表函数实际收到的参数格式。

Function对象啊发出同具目的共享的正统valueOf()方法以及toString()方法。这简单单主意重临的仍然函数的源代码,在调试时进一步有因而。

  1. 闭包

所谓闭包,是倚重词法表示包括不必统计的变量的函数,也就是说,该函数能应用函数外定义之变量。

(完)

相关文章