位置: 编程技术 - 正文

JavaScript数据类型之基本类型和引用类型的值(javascript数据类型有哪些)

编辑:rootadmin

推荐整理分享JavaScript数据类型之基本类型和引用类型的值(javascript数据类型有哪些),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:JavaScript数据类型的概念,javascript数据类型检测,JavaScript数据类型分为哪两大类,javascript数据类型有哪些,javascript数据类型检测,JavaScript数据类型,javascript数据类型检测,JavaScript数据类型,内容如对您有帮助,希望把文章链接给更多的朋友!

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

在将一个值赋给变量时,解析器必须确定这个值是基本类型还是引用类型。基本类型包括如Undefined、Null、Boolean、Number和String,这5种基本类型数据类型是按值访问的,因此可以操作保存在变量中的实际的值;引用类型类型的值是保存在内存中的对象。与其他语言不同,JavaScript不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间。在操作对象时,实际上实在操作对象的引用而不是实际的对象,因此,引用类型的值是按引用访问的。

1、动态的属性 定义基本类型和定义引用类型的方法大相近庭。对于引用类型的值,我们可以为其添加属性和方法,也可以改变和删除其属性和方法,如下:

2、复制变量值

如果从一个变量向另一个变量复制基本类型的值,会在变量对象上创建一个新值,然后将该值复制到为新变量分配的位置上。

 当从一个变量向另一个变量复制引用类型的值时,同样也会将存储在变量对象中的值复制一份放到为新变量分配的内存空间里。不同的是,这个值实际上是一个指针,而这个指针执行存储在堆中的一个对象。复制结束后,两个变量实际上将引用同一个对象。因此,改变其中一个变量,就会影响到另一个变量,如下所示:

JavaScript数据类型之基本类型和引用类型的值(javascript数据类型有哪些)

3、传递参数

ESMAScript中所有函数的参数都是按值传递的。也就是说,把函数外部的值复制给函数内部的参数,就是把值从一个变量复制到另一个变量一样。基本类型值的传递如同基本类型变量的复制一样。引用类型值的传递,则如同引用类型变量的复制一样。有不少开发者在这一点上可能感到困惑,因为访问变量有按值和按引用两种方式,而参数只能按值传递。

在向参数传递基本类型的值时,被传递的值会被复制给一个局部变量(即命名参数)。如下代码所示:参数实际上是函数的局部变量。参数num和变量count互不认识,它们仅仅具有相同的值。假如num是按引用传递的,那么变量count的值也将变成,从而反映函数内部的变化。

在向参数传递引用类型的值时,会把这个值在内存中的地址复制一个给局部变量,因此这个局部变量的变化会反映在函数的外部。在这里我们使用引用类型来看一下:

在这个函数内部,obj和person引用的是同一个对象。换句话说,即使这个对象是按值传递的,obj也会按引用来访问同一个对象。于是,当在函数内部为obj添加name属性后,函数外部的person也会有所反映,因为person指向的对象在堆内存中只有一个,而且是全局对象。很多开发者错误的认为:在局部作用域中修改的对象会在全局作用域中反映出来,就说明参数是按引用传递的。为了证明对象是按值传递的,我们在看看下面这个进过修改的例子:

上面这个例子可以看出,如过person是按引用传递的,那么person就会自动被修改为指向其name属性值为"sdf"的新对象。但是,当接下来再访问person.name时,显示的仍然是"zxj"。这说明即使在函数内部修改了参数的值,但原始的引用仍然保存不变。实际上,当在函数内部重写obj时,这个变量引用的就是一个局部对象了。而这个局部对象会在函数执行完毕时立即销毁。

可以将ECMAScript函数的参数想象成局部变量。

4、检测类型

虽然在检测基本数据类型时typeof是一个得力助手,但是在检测引用类型时,这个操作符用处却不大。通常,我们并不想知道某个值是对象,而是想知道他是什么类型的对象。为此ECMAScript提供了instanceof操作符,其语法如下: 如果变量是给定引用类型的实例,那么instanceof操作符会返回true:

深入探讨JavaScript String对象 String字符串对象1.介绍String对象,对字符串进行操作,如:截取一段子串、查找字符串/字符、转换大小写等等。2.定义方式2.1newString(Value)构造函数:返

JavaScript原生对象之Date对象的属性和方法详解 创建Date对象的语法://Date对象会自动把当前日期和时间保存为其初始值。newDate();//value-毫秒:代表自世界协调时年1月1日::开始的数值。newDate(val

javascript中hasOwnProperty() 方法使用指南 概述hasOwnProperty()方法用来判断某个对象是否含有指定的自身属性。语法obj.hasOwnProperty(prop)参数prop要检测的属性名称。描述所有继承了Object.prototype的对

标签: javascript数据类型有哪些

本文链接地址:https://www.jiuchutong.com/biancheng/382848.html 转载请保留说明!

上一篇:JavaScript数据类型详解(JavaScript数据类型)

下一篇:深入探讨JavaScript String对象(深入探讨英文)

  • 向境外企业支付利息代扣代缴
  • 存续分立的账务处理
  • 所得税在什么情况下扣除
  • 制造费用月末不可能有余额
  • 个体营业执照从哪里查询
  • 空调折旧费用科目
  • 客户未付关税是否可以申请晚交
  • 固定资产投资转化为gdp比例
  • 已认证抵扣的发票如何红字信息表
  • 取得消费税出口退税款如何做会计处理?
  • 预付账款怎么做凭证
  • 企业的期间费用包括什么
  • 老板买增票财务怎么做账
  • 购买股权支付的相关税费怎么处理
  • 企业劳务发票怎么开,税率是多少
  • 采购退货退款怎么做账
  • 火车票抵扣进项税需要认证吗
  • 委托出口货物怎么办理退免税?
  • 分期消费的实际收益
  • 采购与付款内部控制开题报告
  • 买入返售金融资产是资产还是负债
  • 机票改签费要开发票吗
  • 小规模人力资源服务费税率
  • 咨询费属于什么大类
  • 转让无形资产税目征收营业税的是
  • 运费从货款中扣除后付款分录怎么做
  • mac怎么打印文件内容
  • 税控服务费政策
  • win10更新失败怎么回事
  • php实现文件上传
  • php分页函数封装
  • 免抵税额交地方教育附加吗
  • 利息保障倍数 资本化利息支出
  • php编程基础与案例开发
  • vue项目如何配置启动的端口
  • 陈列费用明细表怎么做
  • vue创建项目后开始写的步骤
  • 圣米歇尔山法语介
  • php数组有哪几种类型
  • 稿酬的支付方式
  • 企业会计准则对收入的定义
  • 一件代发退货如何处理
  • Python数学建模三剑客
  • 织梦可以放两个模板吗
  • 收到抵扣发票怎么做分录
  • zabbix 网络监控
  • 怎么把其他应收款借方余额转出
  • 个税显示退税成功但是没有收到钱
  • 吸收合并和新设合并哪个更好
  • 建筑企业分项目信息采集表怎么填
  • 专家劳务费可以在手机操作吗
  • 符合规定的国内旅客运输发票可以作为扣税凭证吗
  • 公司垫付生育津贴后,社保局未报销给公司
  • 异地办理税务登记需要什么资料
  • 企业对外借款计入什么科目
  • 销售公司扣款制度合法吗
  • 母子公司间资产划转是否属于特殊性收入
  • 第三方支付利息
  • 住房租金专项附加扣除金额
  • 货款折扣的账务处理
  • 挂靠企业电费如何处理?
  • 如何设置固定资产二级联动下拉菜单
  • mysql获取所有表的数据量
  • mac如何取消自动开机
  • sun solaris 8何启用telnet ftp 功能
  • win8.1 升级
  • mac新版系统
  • qq自动登出
  • Node.js中Bootstrap-table的两种分页的实现方法
  • 游戏引擎在游戏开发中的核心作用
  • 2、BluetoothChat之扫描设备DeviceListActivity.java
  • 广东省为什么电不够用
  • 江苏小孩医保网上缴费
  • 税务局稽查科有什么处理企业的办法
  • 电子税务局申报表在哪里查询
  • 四川省地税局地址
  • 彩票中奖归出钱人还是中奖人
  • 重庆国税电子税务局
  • 去税务局补缴税款医疗费不带证件可以吗
  • 大专学费减免多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设