• Javascript之基本类型和引用类型


    ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值,基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象。

    在将一个值赋给变量时,解析器必须确定这个值是基本类型值还是引用类型值,基本类型值有:Undefined,Null,Boolean,Number和String。这5种基本数据类型是按值访问的,因为可以操作保存在变量种的实际值

    基本数据类型都是单一的值(“hello”,123)值与值之间没有任何联系,若使用基本数据类型的数据,我们所所创建的变量都是独立的,不能成为一个整体

    引用类型的值是保存在内存中的对象,Javascript不允许直接访问内存中的位置,(不能直接操作对象的内存空间。在操作对象时,实际上是在操作对象的引用而不是实际的对象,故引用类型的值是按引用访问的,其中引用类型有(Object,Array,RegExp,Date,Function,特殊的基本包装类型(String,Number,Boolean)以及单体内置对象(Global,Math)

    基本类型

    1.Number

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

    NaN:非数字类型,两大特点:

    1. 涉及到的任何关于NaN的操作都会返回NaN
    2. NaN不等于自己

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

    2.String

    字符串是存储字符的变量,由双引号(“”)或者单引号(‘’)表示

    字符串有length属性,可以取得字符串的长度

    字符串转换:转型函数String(),适用于任何数据类型(null,undefined转换后为null和undefined)

    toString方法(null,undefined不适用)

    3.Boolean

    只有两个值,true和false

    4.Undefined

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

    5Null

    只有一个值的数据类型,null值表示一个空对象的指针,使用typeof操作符检测null值会返回‘object’

    6常见的引用类型

    Object:带有属性和方法的特殊数据类型

    Array:使用单独的变量名来存储一系列的值

    7.基本类型和引用类型的区别

    基本类型的变量是存放在栈区的(栈区是指内存里的栈内存)

    引用类型的值是同时保存在栈内存和堆内存中的对象;

    基本类型的比较是值的比较

    引用类型的比较是引用的比较

    扩展

    1.Null和Undefined的区别

    Null和Undefined基本同义,只有一些细微差异,Null表示“没有对象”,即该处不应该有值

    Undefined表示缺少值,此处应该有值,但是还没有定义:

    • 变量被声明了,但没有赋值时,就等于Undefined
    • 调用函数时,应提供的参数没有提供,该参数为Undefined
    • 对象没有赋值的属性,该属性为undefined
    • 函数没有返回值时,默认返回undefined

    2.什么是栈内存,堆内存,两者的区别

    栈内存:由程序自动向操作系统申请分配以及回收,速度快,使用方便,但程序员无法控制,若分配失败,则提示栈溢出错误,注意:const局部变量也存储在栈区内,栈区向地址减小的方向增长

    堆内存:程序员向os申请一块内存,当系统收到程序的申请时,会遍历一个记录空闲内存地址的链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,分配的速度较慢,地址不连续,容易碎片化,故由程序员申请,同时必须要程序员销毁

  • 相关阅读:
    npm registry
    JS函数addEventListener的浏览器差异性封装
    C# WinForm 异步执行耗时操作并将过程显示在界面中
    在server 2008/2003中 取消对网站的安全检查/去除添加信任网站
    SQL语句中将Datetime类型转换为字符串类型
    未在本地计算机上注册 Microsoft.Jet.OLEDB.4.0 提供程序
    当应用程序不是以 UserInteractive 模式运行时显示模式对话框或窗体是无效操作
    TFS2012常见问题及解答
    笔记《Hbase 权威指南》
    读Java 804
  • 原文地址:https://www.cnblogs.com/yuan233/p/10326673.html
Copyright © 2020-2023  润新知