前端小知识点(1):undefined和null区别

目录

一、奇怪点

二、历史原因

三、具体区别

四、代码演示

五、运行结果


一、奇怪点

有点奇怪的是,JavaScript语言居然有两个表示"无"的值:undefined和null。这是为什么?

二、历史原因

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

但是,JavaScript的设计者,觉得这样做还不够,主要有以下两个原因。

1. null像在Java里一样,被当成一个对象。但是,JavaScript的数据类型分成原始类型(primitive)和合成类型(complex)两大类,作者觉得表示"无"的值最好不是对象。

2. JavaScript的最初版本没有包括错误处理机制,发生数据类型不匹配时,往往是自动转换类型或者默默地失败。作者觉得,如果null自动转为0,很不容易发现错误。

因此,作者又设计了一个undefined。

这里注意:先有null后有undefined,出来undefined是为了填补之前的坑。

三、具体区别

JavaScript的最初版本是这样区分的:null是一个表示"无"的对象(空对象指针),转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。

四、代码演示

console.log(  1  + null );
console.log(  1  + undefined );	

五、运行结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/405662.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

六款主流数据恢复软件(绿色版)下载

From: http://hi.baidu.com/zhaodx/item/406401abe55cfa9e14107377 由于我们误操作或病毒侵害等意外情况发生,难免会删除硬盘上的有用数据或文件,此时请记住:千万不要再往这个硬盘里复制文件或写入新的数据了,哪怕已经清空了回收站…

树莓派UART串口编程--使用wiringPi库-C开发【1-基础应用】

一、串口说明 莓派3B上UART串口位于GPIO的8脚和10脚,分别为GPIO8Tx,GPIO10Rx。在连接外部接口时,需要交换接口,即GPIO8连接到外设的Rx,GPIO10连接到外设的Tx。Rpi3的接口如下: Rpi3B的GPIO8和GPIO10该串口…

linux mint视频,Linux Mint 20.1 beta 发布,新增免费视频播放器

经过六个月的开发,Linux Mint 20.1“ Ulyssa”的 Beta 版于近日发布了。Mint 20.1 是一个长期支持(LTS)版本,基于 Ubuntu 20.04 LTS ,将持续维护到 2025 年。该 Beta 版本基本上实装了此前预告的一些新功能,并提供了 Cinnamon、MA…

[OT]我的2010(加班无极限)

在今年的最后几天,做一下总结. 1. 今年跳了两次槽(~!#$%^&*()) 前面俩公司还都做WM开发(这不之前写了不少WM文章),不过最后这个公司,做mmo服务器,所以目前一直在做Linux上面的写代码. 成功从C#转型到C. 2. C#->C的转换,是在第二个公司完成的,他们不用C#写WM程序. 第一个…

前端小知识点(5):JS垃圾回收机制

目录 一、什么是垃圾回收 二.垃圾回收机制原理 三、垃圾回收方法 3.1 引用计数 3.2 标记清除 内存常见内存泄露以及解决方法 4.1 全局变量: 4.2 定时器和回调函数 4.3 闭包 4.4 没有清理DOM元素引用: 一、什么是垃圾回收 垃圾回收是一种自…

linux python pymysql,Python之pymysql的使用

在Python3.x中,可以使用pymysql来MySQL数据库的连接,并实现数据库的各种操作,本次博客主要介绍了pymysql的安装和使用方法。PyMySQL的安装一、.windows上的安装方法:在python3.6中,自带pip3,所以在python3中…

树莓派静态IP配置方法

一、网络接口文件 配置静态IP有个好处在于每次的访问IP是固定的,比如用到的samba服务器共享文件时可以不改动网络地址。树莓派网络接口在/etc/network/interfaces 文件中进行配置,打开该文件:sudo vi /etc/network/interfaces 可以看到第四行…

带可变参数的宏函数和普通函数实现

From: http://www.vimer.cn/2010/03/cc%E5%AE%8F%E5%AE%9A%E4%B9%89%E7%9A%84%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0.html 编写代码的过程中,经常会输出一些调试信息到屏幕上,一般会调用printf这类的函数。 但是当调试解决之后,我们需要手工将…

SAP 免费赠与客户货物的销项税处理

免费赠与客户货物的销项税处理 如果免费赠与客户货物却要体现销项税,如何处理?在实际业务中因为免费货物是不免税的。所以大家总是以为使用0费用解决但是有一种情况是存在于视同销售。 即D:销售费用 C:销项税 SAP中的处理逻…

前端小知识点(2):普通字符串和new String有什么区别

目录 一、其实不仅字符串 二、那么到底为什么? 三、代码案例 四、运行结果 一、其实不仅字符串 var str abc; typeof str > string //他不是对象,可以有方法或者属性 var num 123; //他不是对象,可以有方法或者属性 typeof num …

linux更新命令yum,Linux中升级更新命令yum upgrade和yum update的区别

Linux中升级更新命令yum upgrade和yum update的区别更新时间:2019-10-31 17:21最满意答案Linux升级命令有两个分别是yum upgrade和yum update, 这个两个命令是有区别的:复制代码代码如下:yum -y update升级所有包同时也升级软件和系统内核复制代码代码如下:yum -y u…

Linux 管理登陆的用户/查看/剔除

Linux是多用户操作系统,支持多用户同时在线,支持对登陆用户的管理:查看与剔除等。 一、查看在线用户命令 命令: w 二、查看登录记录命令 命令 last 三、剔除在线用户命令 命令:sudo pkill -kill -t usr 四、pkill…

Windows下 maven3.0.4的安装步骤+maven配置本地仓库

简单讲下maven的安装步骤: 1.在安装maven之前,先确保已经安装JDK1.6及以上版本,并且配置好环境变量。 2.下载maven3,最新版本是Maven3.0.4 ,下载地址:http://maven.apache.org/download.html 下载apache…

C语言日志操作类实例

包含三个主要的文件&#xff1a;joefunction.h(c), m.c(主函数文件) 1. m.c #include <stdio.h> #include <string.h> #include <time.h> #include "joefunction.h"extern FILE *g_logFile;int main(int argc, char *argv[]) {char temp[16] {0}…

ESX与ESXi管理员必备25个命令

ESX与ESXi管理员必备25个命令VMware ESX和ESXi命令这些VMware ESX和ESXi的命令可以运行在ESX服务控制台&#xff08;本地或远程使用Secure Shell&#xff09;或RCLI&#xff08;在VMware Infrastructure 3&#xff09;和vSphere CLI的&#xff08;在vSphere&#xff09;。在RCL…

前端小知识点(3):JavaScript 单线程

目录 一、为什么 JavaScript 是单线程&#xff1f; 二、JavaScript是单线程&#xff0c;怎样执行异步的代码&#xff1f; 三、事件循环机制 四、代码1 五、结果1 六、代码2 七、结果2 一、为什么 JavaScript 是单线程&#xff1f; JavaScript 语言的一大特点就是单线程…

Linux安装samba的过程,Samba安装全过程

对于linux与windows共享&#xff0c;和平共处&#xff0c;我们可以用Samba软件Samba是一套免费的开源软件&#xff0c;可以在linux或其他类unix操作系统上实现windows域控制器&#xff0c;文件服务&#xff0c;打印服务等。Samba实现了windows系统所使用的核心网络协议&#xf…

树莓派UART串口编程--使用wiringPi库-C开发【2-修改驱动】

一、前言 上一篇博文记录了使用wiringPi提供的串口驱动wiringSerial.c wiringSerial.h&#xff0c;并基于该驱动对串口进行简单的通信&#xff0c;测试中发现该串口的驱动比较简单&#xff0c;接收数据会存在分包的现象&#xff0c;另外一点是串口配置只提供了波特率参数配置&…

《软件开发计划》

校友聊项目开发计划书 项目名称&#xff1a;校友聊 1.引言 1.1编写目的 编写本文档的目的是为了校园内网的用户使用本软件进行文字&#xff0c;视频聊天&#xff0c;而不耗费内网的外网的流量。 1.2背景 基于校园内网用户对流量的强大需求&#xff0c;以及考虑到其中一些特殊用…

【转】全面理解javascript的arguments,callee,caller,call,apply概念(修改版)

(注&#xff1a;在看到大家如此关注JS里头的这几个对象&#xff0c;我试着把原文再修改一下&#xff0c;力求能再详细的阐明个中意义 2007-05-21&#xff09;在提到上述的概念之前&#xff0c;首先想说说javascript中函数的隐含参数&#xff1a;arguments Arguments 该对象代表…