位置: 编程技术 - 正文

详解javascript中原始数据类型Null和Undefined(javascript含义)

编辑:rootadmin

推荐整理分享详解javascript中原始数据类型Null和Undefined(javascript含义),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript definitive guide,javascript entries,javascript含义,javascript definitive guide,javascriptcsdn,javascript的用法,javascript的用法,javascriptz,内容如对您有帮助,希望把文章链接给更多的朋友!

当讨论JavaScript中的原始数据类型时,大多数人都知道的基本知识,从String,Number到Boolean。这些原始类型相当简单,行为符合常识。但是,本文将更多聚焦独特的原始数据类型Null和Undefined,是什么让他们如此相似,却又似是而非。

一、理解Null和Undefined在JavaScript中,null是字面量同时也是语言中的关键字,用来表示无法识别的对象值。换句话说,这用来表示“无值(no value)”。虽然相似,undefined实际上代表了不存在的值(non-existence of a value)。都是完全不可变的,没有属性和方法,也不能给其属性赋值。事实上,试图访问或定义一个属性将会引发一个类型错误(TypeError)。正如他们的名字暗示的那样,他们是完全无效的值。

没有值代表的布尔值是false,这意味着他们在条件上下文中会被被计算为false,如if语句。使用相等操作符(= =)比较这两个值和其他false值,他们并不等于除了自己:

尽管如此,和其他相似之处,但null和undefined并不是等价的。每个作为其独特的类型的唯一成员,undefined是Undefined类型和null是Null类型。使用全等操作符(===)比较这两个值,这要求类型和值都相等,下面证明这一点:

这是一个重要的区别,服务于不同的目的和理由。区分这两个值,你可以认为undefined代表一个意想不到的没有值而null作为预期没有值的代表。二、产生Undefined有许多的方法产生一个undefined值的代码。它通常遇到当试图访问一个不存在的值时。在这种情况下,在JavaScript这种动态的弱类型语言中,只会默认返回一个undefined值,而不是上升为一个错误。任何声明变量时没有提供一个初始值,都会有一个为undefined的默认值:

当试图访问一个不存在的对象属性或数组项时,返回一个undefined值:

详解javascript中原始数据类型Null和Undefined(javascript含义)

如果省略了函数的返回语句,返回undefined:

函数调用时未提供的值结果将为undefined参数值:

void操作符也可以返回一个undefined值。像Underscore的库使用它作为一个防御式的类型检查,因为它是不可变的,可以在任何上下文依赖返回undefined:

最后,undefined是一个预定义的全局变量(不像null关键字)初始化为undefined值:

ECMAScript 5中,这个变量是只读的,以前并非如此。

三、Null的用例null的用例是使他与众不同的主要方面,因为不像undefined,null被认为是更有用。这正是为什么typeof操作符作用于null值时返回“object”。最初的理由是,现在仍然是,通常用作一个空引用一个空对象的预期,就像一个占位符。typeof的这种行为已经被确认为一个错误,虽然提出了修正,出于后兼容的目的,这一点已经保持不变。这就是为什么JavaScript环境从来没有设置一个值为null;它必须以编程方式完成。正如文档MDN所说:在api中,null是经常检索对象的地方可以预期,但没有相关的对象。这适用于DOM,它是独立于语言的,不属于ECMAScript规范的范围。因为它是一个外部API,试图获取一个不存在的元素返回一个null值,而不是undefined。一般来说,如果你需要给一个变量或属性指定一个不变值,将它传递给一个函数,或者从一个函数返回null,null几乎总是最好的选择。简而言之,JavaScript使用undefined并且程序员应该使用null。null的另一个可行的用例,也被认为是良好的实践是一个显式指定变量为无效(object= null)当一个引用不再是必需的。通过分配null值,有效地清除引用,并假设对象没有引用其他代码,指定垃圾收集,确保回收内存。四、深入挖掘使null和undefined像黑洞的不只是他们的行为,而是在他们在JavaScript环境的内部的处理方式。他们似乎通常并不具有同样的关联特征与其他原生或内置对象。在ES5中,Object.prototype.toString方法,已经成为实际的类型检查标准,这在null和undefined中被证明是一致的:

然而,Object.prototype.toString方法实际上并不是检索null的内部[[Class]]属性或undefined的公开构造函数。根据文档,以下步骤发生在被调用过程中:

如果值是undefined,返回“[object Undefined]”。

如果这个值为null,则返回“[object Null]”。 让O作为调用ToObject同时传递this值作为参数的结果值。 让class是O的内部属性[[Class]]的值。 返回的结果连接三个字符串“[object ”,class,和“]”的结果的字符串值。

该方法执行一个简单的字符串返回值,如果它检测到null或undefined和其他对象统一的功能。在整个规范中这是很常见的,因为当遇到null和undefined值时大多数方法包含一个简单的捕捉并返回。事实上,没有迹象表明他们包含与任何原生对象相关联的内部属性。就好像他们不是对象。我很想知道如果一个JavaScript的原生环境内部实际存在的显式方案会怎样?也许有人更熟悉一个可以参与的实现。

结论无论这些原生对象多么不寻常,理解null和undefined之间的差异,和他们在JavaScript的语言基础中截然不同的角色。它可能不能使你的应用程序有所突破,但是一般来说,它仅被证明在开发和调试中长期有益。

标签: javascript含义

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

上一篇:JS实现合并两个数组并去除重复项只留一个的方法(js合并字符串)

下一篇:js实现网页收藏功能(js实现网页收藏的方法)

  • 完税证明可以重复打印吗
  • 房屋出租收入会计分录
  • 个税申报时提示扣缴单位无有效的税费种认定信息
  • 房地产公司拆迁部岗位职责
  • 公司车辆转让需要缴纳印花税吗
  • 周转材料租赁费怎么结转成本
  • 货发出款未收的会计分录怎么做?
  • 工业结转成本方法有哪些?
  • 自产产品赠送确认收入吗
  • 关于一般纳税人提供非学历教育服务适用简易计税
  • 小规模税局代增值税专用发票怎么交税
  • 企业所得税清算报备是什么意思
  • 对方已认证的发票在哪里
  • 现金短缺属于出纳员负责如何做会计处理
  • 事业单位固定资产标准
  • 税盘减免会计分录
  • 债券利息收入的分录
  • 企业签订的借款合同印花税
  • 小规模纳税人如何缴纳企业所得税
  • php中表单的使用
  • 详解php语言最牛的语言
  • 支付包装物押金为什么是其他应收款
  • 预算会计的特点包括
  • 虚拟机不能互相访问
  • 生产性生物资产和消耗性生物资产有什么区别
  • 破产资产拍卖
  • Yii使用技巧大汇总
  • PHP:imagesettile()的用法_GD库图像处理函数
  • 坏账损失税务处理
  • lumenrt
  • 发票抬头可以是两个人吗
  • Php结合wordpress开发,需要学会什么
  • css 100vw、100vh出现滚动条怎么解决
  • 贝尔纳贝
  • 上个月的发票未上传成功可以删除吗
  • 代扣代缴的企业所得税计入成本吗
  • 企业投资计入什么科目
  • 交易性金融资产处置时的会计核算步骤
  • 如何减税降税
  • python的元组有什么用
  • 绩效奖个人所得税是多少
  • 食堂购买固定资产会计处理
  • 合同补充协议印花税怎么交
  • 结转各项成本的会计分录
  • 使用权资产是什么意思
  • db2pd 命令
  • 工业企业成本一般占收入的比例
  • 发票必须包含什么内容
  • 水电费发票没有可以用其他发票抵吗
  • 收到银行承兑汇票怎么处理
  • 清算中的企业能恢复吗
  • 转出上年的进项税怎么算
  • 购买汽车抵扣增值税税率
  • 机械租赁带司机和不带司机的税率
  • 外汇汇率调整分为哪几种
  • 股东参与经营可以退股吗
  • 小规模企业能否消化13点增值税普通发票
  • 医院药品过期放多久
  • 个人付款开了公章怎么办
  • mysql基础概念
  • sql server如何进行安全设置
  • mysql 查找
  • win7系统怎样设置
  • windows10移动
  • unity优化技术
  • ugui scrollview
  • Android中的数据存储方式有五种,分别是
  • apktool破解应用内购
  • nginx服务器日志
  • javascript语法术语
  • fflogs隐藏数据
  • unityui动画
  • 浅析Python中MySQLdb的事务处理功能
  • js编写一个标准的单例模式类
  • jquery基础知识梳理
  • 山西省国家税务局王旭斌局长
  • 河南省残疾人个税优惠政策
  • 顺丰快递的开票历史如何删除
  • 江苏税务法人实名采集怎么操作流程
  • 广东佛山税务局人工电话是多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设