JavaScript不建议直接声明undefined的原因,极致的严谨和仔细

前言:

很多人写JavaScript代码时习惯用var a = undefined 这种写法,其实这种写在某种情况下会产生意想不到的bug,又或者说undefined本身就是JavaScript的一个bug?? 为什么这么说呢, 因为undefined它应该是关健字才合理的,但undefined在JavaScript里面压根就不是关健字,它是window的一个属性即window.undefined, 没想到吧。

为什么发现这个冷门知识点??

因为最近在拜读一些包的底层源码时,发现有一种很有意思的写法我不太理解var a = void 0; 然后我就去各方查资料,发现这种写法有两个好处,1、是能降低文件大小,2、秉承犀牛书的观点,任何时候都不主动声明undefined。

任何时候都不主动声明undefined的原因

前面说到了undefined在JavaScript里面压根就不是关健字,而是一个属性,在控制台window.undefined就知道了

但它是一个只读属性,我们是无法对undefined重新赋值的

虽然是只读属性,但是在特定条件下还是会出现bug,如下所示

javascript 复制代码
function test() {
    var undefined = '我是test'; 
    var a = undefined;
    console.log(a)
}

test()   // '我是test'

看出来问题了不,var a = undefined 但 这里的undefined是方法内部的undefined而不是window的,所以拿到的是'我是test', 虽然理论上不会出现这种场景,但这确实就是一个漏洞了。

推荐写法

犀牛书的观点,用null表示空,但用 var a = void 0 这种写法也行。void后面不一定就是写0,因为void 表达式最终会返回一个undefined,如下所示。

注意:void是会执行右边的语句然后返回undefined。所以如果右边语句有副作用的话还是能看到不一样的,所以用一个无副作用的0

总结:

一个很有意思的小知识点,单纯是分享一下互相学习。

相关推荐
onebyte8bits9 分钟前
前端国际化(i18n)体系设计与工程化落地
前端·国际化·i18n·工程化
C澒18 分钟前
前端分层架构实战:DDD 与 Clean Architecture 在大型业务系统中的落地路径与项目实践
前端·架构·系统架构·前端框架
BestSongC22 分钟前
行人摔倒检测系统 - 前端文档(1)
前端·人工智能·目标检测
0思必得01 小时前
[Web自动化] Selenium处理滚动条
前端·爬虫·python·selenium·自动化
Misnice1 小时前
Webpack、Vite、Rsbuild区别
前端·webpack·node.js
青茶3601 小时前
php怎么实现订单接口状态轮询(二)
前端·php·接口
大橙子额2 小时前
【解决报错】Cannot assign to read only property ‘exports‘ of object ‘#<Object>‘
前端·javascript·vue.js
WooaiJava3 小时前
AI 智能助手项目面试技术要点总结(前端部分)
javascript·大模型·html5
LYFlied3 小时前
从 Vue 到 React,再到 React Native:资深前端开发者的平滑过渡指南
vue.js·react native·react.js
爱喝白开水a3 小时前
前端AI自动化测试:brower-use调研让大模型帮你做网页交互与测试
前端·人工智能·大模型·prompt·交互·agent·rag