当前位置: 首页 > news >正文

typeof运算符 +unll和undefined的区别

typeof运算符     

JavaScript 有三种方法,可以确定一个值到底是什么类型。而我们 现在需要接触到的就是typeof

数值返回number

1  typeof 123 // "number"

字符串返回string

1  typeof '123' // "string"

布尔值返回boolean

1  typeof false // "boolean"

对象返回object

1  typeof {} // "object"

unllundefined的区别

概述

null与undefined都可以表示没有,含义非常相似。将一个变量赋  值为undefinednull,老实说,语法效果几乎没区别。

既然含义与 用法都差不多,为什么要同时设置两个这样的值,这不是无端增加  复杂度,令初学者困扰吗?这与历史原因有关

历史原因:

1995年JavaScript诞生时,最初像Java一样,只设置了null作为表示"无"的值。根据C语言的传统,null被设计成可以自动转为0

但是,JavaScript的设计者Brendan Eich,觉得这样做还不够,有两个原因。首先,null像在Java里一样,被当成一个对象。但是,JavaScript的值分成原始类型和合成类型两大类,Brendan Eich觉得表示"无"的值最好不是对象。其次,JavaScript的最初版本没有包括错误处理机制,发生数据类型不匹配时,往往是自动转换类型或者默默地失败。Brendan Eich觉得,如果null自动转为0,很不容易发现错误。

因此,Brendan Eich又设计了一个undefined。他是这样区分的:null是一个表示"无"的对象,转为数值时为0undefined是一个表示"无"的原始值,转为数值时为NaN

Number(undefined) // NaN
5 + undefined // NaN

null的特殊之处在于,JavaScript把它包含在对象类型(object)之中

查询null的类型,JavaScript返回object(对象):

typeof null // "object"

这并不是说null的数据类型就是对象,而是JavaScript早期部署中的一个约定俗成,其实不完全正确,后来再想改已经太晚了,会破坏现存代码,所以一直保留至今。

注意:JavaScript的标识名区分大小写,所以undefinednull不同于UndefinedNull(或者其他仅仅大小写不同的词形),后者只是普通的变量名。

http://www.xdnf.cn/news/931069.html

相关文章:

  • AI书签管理工具开发全记录(十七):Sun-Panel书签同步实现
  • 【ArcGIS Pro微课1000例】0072:如何自动保存编辑内容及保存工程?
  • 68常用控件_QGroupBox的使用
  • C语言中的文件操作
  • Android写一个捕获全局异常的工具类
  • 【hive】函数集锦:窗口函数、列转行、日期函数
  • stm32-c8t6实现语音识别(LD3320)
  • 【Mac 从 0 到 1 保姆级配置教程 16】- Docker 快速安装配置、常用命令以及实际项目演示
  • 【SpringBoot+SpringCloud】Linux配置nacos踩坑大全
  • AI时代:学习永不嫌晚,语言多元共存
  • 思澈sdk-新建lcd
  • LeetCode--25.k个一组翻转链表
  • 从0开始学习R语言--Day20-ARIMA与格兰杰因果检验
  • 【第八篇】 SpringBoot高级配置(配置篇)
  • CZGL.SystemInfo:跨平台的系统信息获取库
  • AUTOSAR实战教程--DoIP_01_配置项解释
  • 0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
  • Linux下GCC和C++实现统计Clickhouse数据仓库指定表中各字段的空值、空字符串或零值比例
  • Go基本语法——go语言中的四种变量定义方法
  • 【Java学习笔记】BigInteger 和 BigDecimal 类
  • 【Go语言基础【19】】接口:灵活实现多态的核心机制
  • 基于RT-DETR算法的夜间交通车辆与行人目标检测
  • FPGA静态功耗
  • 2025年与2030年AI及AI智能体 (Agent) 市场份额分析报告
  • 网络之交换机
  • 【题解-洛谷】B3626 跳跃机器人
  • JavaWeb——登录(14/16):登录校验-Interceptor-详解(使用细节、拦截路径的配置、匹配规则、执行流程、拦截器与过滤器的区别)
  • 【华为云Astro 轻应用】组装“待处理工单”页面示例
  • C语言基础面试问答
  • 【人工智能 | 项目开发】Python Flask实现本地AI大模型可视化界面