美文网首页让前端飞
JavaScript——数据类型

JavaScript——数据类型

作者: 2o壹9 | 来源:发表于2020-01-04 19:12 被阅读0次

JavaScript具有编程语言所期望的许多值:布尔值,数字,字符串,数组等。JavaScript中的所有值都具有属性。[ 1 ]每个属性都有一个键(或名称)和一个值。您可以想到诸如记录字段之类的属性。您可以使用点(.)运算符读取属性:

value.propKey

例如,字符串'abc'具有属性length:

> var str ='abc';

>长度

3

前面也可以写成:

>'abc'.length

3

点运算符还用于分配 属性值:

> var obj = {}; //空对象

> obj.foo = 123; //创建属性`foo`,将其设置为123

123

> obj.foo

123

您可以使用它来调用方法:

>'hello'.toUpperCase()

'你好'

在前面的示例中,我们toUpperCase()在value上 调用了方法'hello'。

原始值与对象

JavaScript有所区别 值之间:

该原始值是布尔型,数字,字符串,null和undefined。

所有其他值都是object。

两者之间的主要区别在于比较方式。每个对象都有唯一的标识,并且(严格地)等于自身:

> var obj1 = {}; //一个空对象

> var obj2 = {}; //另一个空对象

> obj1 === obj2

> obj1 === obj1

真正

相反,所有编码相同值的原始值都被认为是相同的:

> var prim1 = 123;

> var prim2 = 123;

> prim1 === prim2

真正

接下来的两节将更详细地说明原始值和对象。

原始价值

以下是所有原始值(或简写为原语):

布尔值:true,,false(请参阅布尔值)

数字:1736,1.351(请参阅数字)

字符串:'abc',"abc"(请参阅字符串)

两个“非值”:undefined,null(请参见undefined和null)

基元具有以下特征:

按价值比较

比较“内容”:

> 3 === 3

真正

>'abc'==='abc'

真正

永远不变

不能更改,添加或删除属性:

> var str ='abc';

> str.length = 1; //尝试更改属性`length`

> str.length //⇒没有效果

3

> str.foo = 3; //尝试创建属性`foo`

> str.foo //⇒无效,属性未知

未定义

(读取未知属性总是返回undefined。)

对象

所有非原始 值是对象。最常见的对象是:

普通对象,可以由对象文字创建(请参见Single Objects):

{

    firstName: 'Jane',

    lastName: 'Doe'

}

前面的对象具有两个属性:property 的值为firstName is 'Jane'和property 的值为lastNameis 'Doe'。

数组,可以是由数组文字创建(请参见Arrays):

[ 'apple', 'banana', 'cherry' ]

前面的数组具有三个可以通过数字索引访问的元素。例如,索引'apple'为0。

正则表达式,可以由正则表达式文字创建(请参见正则表达式):

/^a+b+$/

对象具有以下特征:

参考比较

身份进行比较;每个值都有其自己的标识:

>({} === {})//两个不同的空对象

> var obj1 = {};

> var obj2 = obj1;

> obj1 === obj2

真正

默认为可变

通常,您可以自由地更改,添加和删除属性(请参见Single Objects):

> var obj = {};

> obj.foo = 123; //添加属性`foo`

> obj.foo

123

未定义且为null

大多数编程语言都具有表示缺少信息的值。JavaScript有两个这样的“非值” undefined和null:

undefined表示“无值”。未初始化的变量是undefined:

> var foo;

>富

未定义

缺少的参数是undefined:

>函数f(x){return x}

> f()

未定义

如果读取不存在的属性,则会得到undefined:

> var obj = {}; //空对象

> obj.foo

未定义

null 表示“无对象”。只要需要对象(参数,对象链的末尾等),它就用作非值。

警告

undefined而且null没有属性,甚至没有标准方法toString()。

检查未定义或为空

函数通常允许您通过undefined或指示缺失值null。您可以通过显式检查执行以下操作:

if (x === undefined || x === null) {

    ...

}

您还可以利用undefined和null同时考虑false以下事实:

if (!x) {

    ...

}

警告

false,0,NaN,和''也算false(见Truthy和Falsy)。

使用typeof和instanceof对值进行分类

有两个运算符 值分类:typeof主要用于原始值,而instanceof用于对象。

typeof 看起来像这样:

typeof value

它返回一个字符串,描述的“类型” value。这里有些例子:

> typeof true

'布尔'

> typeof'abc'

'串'

> typeof {} //空对象文字

'宾语'

> typeof [] //空数组文字

'宾语'

下表列出了的所有结果typeof:

操作数 结果

undefined

'undefined'

null

'object'

布尔值

'boolean'

数值

'number'

字符串值

'string'

功能

'function'

所有其他正常值

'object'

(引擎创造的值)

允许JavaScript引擎创建typeof返回任意字符串的值(不同于此表中列出的所有结果)。

typeof null返回'object'是无法修复的错误,因为它会破坏现有代码。这并不意味着它null是一个对象。

instanceof 看起来像这样:

value instanceof Constr

它返回trueif是否value是由构造函数创建的对象Constr(请参见Constructors:对象的工厂)。这里有些例子:

> var b = new Bar(); //由构造函数Bar创建的对象

> b instanceof酒吧

真正

> {} instanceof对象

真正

> [] instanceof Array

真正

> [] instanceof Object //数组是Object的子构造函数

真正

>未定义的instanceof对象

> null instanceof Object

相关文章

网友评论

    本文标题:JavaScript——数据类型

    本文链接:https://www.haomeiwen.com/subject/wyjfactx.html