资讯专栏INFORMATION COLUMN

JS中的六大数据类型

刘厚水 / 2234人阅读

摘要:创建数组的基本方式有两种第一种是使用构造函数,如下所示第二种是使用数组字面量表示法,如下所示类型每个函数都是类型的实例,而且都与其他引用类型一样具有属性和方法。

js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Undefined,Null),和一种复杂数据类型(Object)。

typeof 操作符
由于js中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是typeof关键字.

type of 123   //Number

type of "abc"  //String

type of true //Boolean

type of undefined //Undefined

type of null //Object

type of { } //Object

type of [ ] //Object

type of console.log() //Function

null类型进行typeof操作符后,结果是object,原因在于,null类型被当做一个空对象引用。

1.Number类型
Number类型包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后面至少有一位数字)两种值。

NaN:非数字类型。特点:① 涉及到的 任何关于NaN的操作,都会返回NaN ② NaN不等于自身。

isNaN() 函数用于检查其参数是否是非数字值。

isNaN(123) //false isNaN("hello") //true

2.String类型
字符串有length属性。

字符串转换:转型函数String(),适用于任何数据类型(null,undefined 转换后为null和undefined);toString()方法(null,defined没有toString()方法)。

3.Boolean类型
该类型只有两个值,true和false

4.Undefined类型
只有一个值,即undefined值。使用var声明了变量,但未给变量初始化值,那么这个变量的值就是undefined。

5.Null类型
null类型被看做空对象指针,前文说到null类型也是空的对象引用。

6.Object类型
js中对象是一组属性与方法的集合。这里就要说到引用类型了,引用类型是一种数据结构,用于将数据和功能组织在一起。引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法。

三大引用类型
1.Object类型
我们看到的大多数类型值都是Object类型的实例,创建Object实例的方式有两种。

第一种是使用new操作符后跟Object构造函数,如下所示

var person = new Object();

person.name = "Micheal";

person.age = 24;

第二种方式是使用对象字面量表示法,如下所示

var person = {

  name : "Micheal",

  age : 24

};

2.Array类型
数组的每一项可以用来保存任何类型的数据,也就是说,可以用数组的第一个位置来保存字符串,第二个位置保存数值,第三个位置保存对象....另外,数组的大小是可以动态调整的。

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

第一种是使用Array构造函数,如下所示

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

第二种是使用数组字面量表示法,如下所示

var colors = ["red","blue","yellow"];

3 Function类型
每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法。函数通常是使用函数声明语法定义的,如下所示

function sum(num1,num2){

  return num1 + num2;

};

这和使用函数表达式定义函数的方式相差无几。

var sun = function (){

  return sum1 + sum2;

};

也就是说,js按照存储方式分为值类型和引用类型。那么他们的计算有什么区别呢?

题目1: var a = 100;

    var b = a;

    a = 200;

    console.log (b);

题目2: var a = {age : 20};

    var b = a;

    b.age = 21;

    console.log (a.age);

题目1的答案是 100,题目2的答案是21,

题目1是简单的值类型,在从一个变量向另一个变量赋值基本类型时,会在该变量上创建一个新值,然后再把该值复制到为新变量分配的位置上。

此时,a中保存的值为 100 ,当使用 a 来初始化 b 时,b 中保存的值也为100,但b中的100与a中的是完全独立的,该值只是a中的值的一个副本,此后,
这两个变量可以参加任何操作而相互不受影响。也就是说基本类型在赋值操作后,两个变量是相互不受影响的。

题目2是引用类型,当从一个变量向另一个变量赋值引用类型的值时,同样也会将存储在变量中的对象的值复制一份放到为新变量分配的空间中。

这时保存在变量中的是对象在堆内存中的地址,所以,与简单赋值不同,这个值的副本实际上是一个指针,而这个指针指向存储在堆内存的一个对象。那么赋值操作后,
两个变量都保存了同一个对象地址,则这两个变量指向了同一个对象。因此,改变其中任何一个变量,都会相互影响。

因此,引用类型的赋值其实是对象保存在栈区地址指针的赋值,因此两个变量指向同一个对象,任何的操作都会相互影响。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/93008.html

相关文章

  • Python基础学习之常用六大数据类型

    摘要:刚开始学习一门编程语言,除了了解运行环境与语言类型之外,最基本还是从该语言的基本数据类型开始学起。六大常用数据类型整数浮点数字符串列表元组字典讲解这些先说一下中的变量与变量名。支持对整数和浮点数直接进行四则混合运算。 刚开始学习一门编程语言,除了了解运行环境与语言类型之外,最基本还是从该语言的基本数据类型开始学起。 Python六大常用数据类型: int 整数 floa...

    GT 评论0 收藏0
  • JS学习笔记(第6章)(面向对象之继承——JS继承的六大方式)

    摘要:除此之外,在超类型的原型中定义的方法,对子类型而言也是不可兼得,结果所有类型都只能用构造函数模式。创建对象增强对象指定对象继承属性这个例子的高效率体现在它只调用了一次构造函数。 1、原型链 原型链的基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。构造函数、原型和实例的关系:每个构造函数都有一个原型对象;原型对象都包含着一个指向构造函数的指针;实例都包含一个指向原型对象的...

    lscho 评论0 收藏0
  • java十六大常用工具类

    摘要:一关闭一个流或者且不抛出异常。删除文件或文件夹且不会抛出异常。此外,还支持等十格式化参数,返回一个或者可用字符串把或者等转换为十一加密,返回位加密加密加密加密,返回位十二是否为空根据条件筛选集合元素根据指定方法处理集合元素,类似的。 一. org.apache.commons.io.IOUtils closeQuietly 关闭一个IO流、socket、或者selector且不...

    joyqi 评论0 收藏0
  • 云计算的六大相关技术

    摘要:云计算是一种新型的业务交付模式,同时也是新型的基础设施管理方法。云计算催生了一些优秀的分布式文件系统和云存储服务。这两种可伸缩的分布式文件系统利用容错和故障恢复机制,有效地克服了单节点故障导致的系统故障,实现了大规模海量级的文件存储。云计算是一种新型的业务交付模式,同时也是新型的IT基础设施管理方法。通过新型的业务交付模式,用户将通过网络充分利用优化的硬件、软件和网络资源,并以此为基础提供创...

    JeOam 评论0 收藏0
  • 六大区别 (重载与重写、顺序表和链表、Comparable和Comparator、抽象类和接口、su

    摘要:区别文章目录区别一重载与重写方法的重载重载的规则方法的重写覆盖,覆写重写的规则小结二顺序表和链表三和小结四抽象类和接口抽象类接口五和六和小结一重载与重写重载在一个类里面我们需要用一个函数同时兼容多种参数的情况我们就可以使用到方法重载。 ...

    crelaber 评论0 收藏0

发表评论

0条评论

刘厚水

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<