JavaScript数据类型

JavaScript中有5种简单数据类型number,string,boolean,undefined,null和一种复杂数据类型object,object本质是由一组无序的键值对组成的。

数值型:Number 

Number 类型 可以用来表示整数和浮点数值。也支持各种数值类型,包括八进制,十六进制等,但最常用的还是十进制。

所谓浮点数值,就是该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。

JavaScript 能够表示的最小数值保存在 Number.MIN_VALUE 中——在大多数浏览器中,这个值是 5e-324;能够表示的最大数值保存在Number.MAX_VALUE 中——在大多数浏览器中,这个值是 1.7976931348623157e+308。如果某次计算的结果得到了一个超出 JavaScript 数值范围的值,那么这个数值将被自动转换成特殊的 Infinity 值。

NAN是Number类型中一个特殊的数值,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况。

比如:var a=”a”;  a=a-1; 此时输出a的值就为NAN。

NaN 与任何值都不相等,包括 NaN 本身。

alert(isNaN(NaN)); //true

alert(isNaN(10)); //false( 10 是一个数值)

alert(isNaN("10")); //false(可以被转换成数值 10)

alert(isNaN("blue")); //true(不能转换成数值)

alert(isNaN(true)); //false(可以被转换成数值 1)

这个例子测试了 5 个不同的值。测试的第一个值是 NaN 本身,结果当然会返回 true。然后分别测试了数值 10 和字符串"10",结果这两个测试都返回了 false,因为前者本身就是数值,而后者可以被转换成数值。但是,字符串"blue"不能被转换成数值,因此函数返回了 true。由于 Boolean 值 true可以转换成数值 1,因此函数返回 false。

字符串:String

字符串可以由双引号(")或单引号(')表示。字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量

常用转义字符:

\n 换行

\t 制表

\b 空格

\r 回车

\f 进纸

\\ 斜杠

\' 单引号('),在用单引号表示的字符串中使用。例如: 'He said, \'hey.\''

\" 双引号("),在用双引号表示的字符串中使用。例如: "He said, \"hey.\""


布尔:Boolean

该类型只有两个字面值: true 和 false。

需要注意的是,Boolean 类型的字面值 true 和 false 是区分大小写的。也就是说,True 和 False(以及其他的混合大小写形式)都不是 Boolean 值,只是标识符。

以下数据在转换成布尔值时都为false。

1,false

2,””(空字符串)

3,  0和NAN

4,null

5,undefined

未定义:undefined

Undefined 类型只有一个值,即特殊的 undefined。在使用 var 声明变量但未对其赋值时,

这个变量的值就是 undefined 。

空:null

Null类型也只有一个值,这个值就是null。如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为 null 而不是其他值。这样一来,只要直接检查 null 值就可以知道相应的变量是否已经保存了一个对象的引用。

实际上, undefined 值是派生自 null 值的,因此 ECMA-262 规定对它们的相等性测试要返回 true:

alert(null == undefined); //true

尽管 null 和 undefined 有这样的关系,但它们的用途完全不同。如前所述,无论在什么情况下都没有必要把一个变量的值显式地设置为 undefined,可是同样的规则对 null 却不适用。换句话说,只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存 null 值。这样做不仅可以体现 null 作为空对象指针的惯例,而且也有助于进一步区分 null 和 undefined。

在学习完6种数据类型之后有必要了解一下typeof操作符。

Typeof操作符用于检测给定变量的数据类型。对一个值使用typeof操作符可能会返回一下六种值。

1,如果这个值未定义或未赋值,返回”undefined”

2,如果是数值型,则返回”number”

3,如果是字符串,返回”string”

4,如果是布尔型,返回”boolean”

5,如果是对象或null,返回”object”

6,如果是函数,返回”function”.

这几种数据类型之间也是可以相互转换的,有时候需要将数字形式的字符串转换成数值进行运算,数据类型的转换请查看之前的博客。

总结完了简单数据类型,我们再看看复杂数据类型,也称为引用数据类型。

对象Object:

JavaScript中的对象其实就是一组数据和功能的集合。对象可以通过执行 new 操作符后跟要创建的对象类型的名称来创建。而创建 Object 类型的实例并为其添加属性和(或)方法,就可以创建自定义对象,如下所示:

var o = new Object();

Object 的每个实例都具有下列属性和方法。

1,constructor:保存着用于创建当前对象的函数。对于前面的例子而言,构造函数(constructor)就是 Object()。

2,hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例

的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定(例

如: o.hasOwnProperty("name"))。

3, isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型(第 5 章将讨论原

型)。

4,propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用 for-in 语句,(本章后面将会讨论)来枚举。与 hasOwnProperty()方法一样,作为参数的属性名必须以字符串形式指定。

5,toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。

6,toString():返回对象的字符串表示。

7, valueOf():返回对象的字符串、数值或布尔值表示。通常与 toString()方法的返回值

相同。

JavaScript提供了很多原生引用类型,如object类型,Array类型,Date类型,RegExp类型,Function类型等。

1,object类型

我们看到的大多数引用类型值都是 Object 类型的实例 。

创建 Object 实例的方式有两种。第一种是使用 new 操作符后跟 Object 构造函数,如下所示:

var person = new Object();

person.name = "Nicholas";

person.age = 29;

另一种方式是使用对象字面量表示法。对象字面量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程。下面这个例子就使用了对象字面量语法定义了与前面那个例子中相同的person 对象:

var person = {

name : "Nicholas",

age : 29

};

2,Array类型

数组对象是使用单独的变量名来存储一系列的值。除了 Object 之外, Array 类型恐怕是 JavaScript 中最常用的类型了。而且, JavaScript 中的数组与其他多数语言中的数组有着相当大的区别。虽然 JavaScript 数组与其他语言中的数组都是数据的有序列表,但与其他语言不同的是, JavaScript 数组的每一项可以保存任何类型的数据。也就是说,可以用数组的第一个位置来保存字符串,用第二位置来保存数值,用第三个位置来保存对象。

创建数组的基本方式有两种。

第一种是使用 Array 构造函数,如下面的代码所示。

var colors = new Array();

如果预先知道数组要保存的项目数量,也可以给构造函数传递该数量,而该数量会自动变成 length属性的值。例如,下面的代码将创建 length 值为 20 的数组。

var colors = new Array(20);

也可以向 Array 构造函数传递数组中应该包含的项。以下代码创建了一个包含 3 个字符串值的数组:

var colors = new Array("red", "blue", "green");

创建数组的第二种基本方式是使用数组字面量表示法。数组字面量由一对包含数组项的方括号表示,多个数组项之间以逗号隔开,如下所示:

var colors = ["red", "blue", "green"]; // 创建一个包含 3 个字符串的数组

var names = []; // 创建一个空数组

ECMAScript 5 新增了 Array.isArray()方法。这个方法的目的是最终确定某个值到底是不是数组,这个方法的用法如下。

if (Array.isArray(value)){

//对数组执行某些操作

}

支持 Array.isArray()方法的浏览器有 IE9+、 Firefox 4+、 Safari 5+、 Opera 10.5+和 Chrome。

关于操作数组的方法比较多,后续再做专题介绍。

3,Date类型

Date 类型提供了有关日期和时间的信息,包括当前日期和时间以及相关的计算功能;

4,RegExp类型

RegExp 类型是 ECMAScript 支持正则表达式的一个接口,提供了最基本的和一些高级的正表

达式功能。 这部分内容也比较多,后续单独总结。

5,Function类型

由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定。函数通常是使用函数声明语法定义的,如下面的例子所示。

function sum (num1, num2) {

return num1 + num2;

}

这与下面使用函数表达式定义函数的方式几乎相差无几。

var sum = function(num1, num2){

return num1 + num2;

};

 6,Math对象

Math是js中的一个对象,它提供了很多关于数学计算方面的方法.

需要记住的一些方法是:

1.Math.round(数字)  :将数字进行四舍五入以后的整数返回

2.Math.random()    :返回一个0~1的随机数

3.Math.ceil(数字)   :将数字向上取整并返回

4.Math.floor(数字)  :将数字向下取整并返回

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,490评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,581评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,830评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,957评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,974评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,754评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,464评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,847评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,995评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,137评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,819评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,482评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,023评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,149评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,409评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,086评论 2 355

推荐阅读更多精彩内容