软件教程 2025年08月6日
0 收藏 0 点赞 466 浏览 2296 个字
摘要 :

文章目录 一、null与undefined的概念差异 二、实际使用规范 (一)变量初始化 (二)对象属性处理 (三)函数参数与返回值 (四)判断空值 (五)清除引用优化垃圾回收……




  • 一、nullundefined的概念差异
  • 二、实际使用规范
    • (一)变量初始化
    • (二)对象属性处理
    • (三)函数参数与返回值
    • (四)判断空值
    • (五)清除引用优化垃圾回收
  • 三、不符合规范的示例
  • 四、TypeScript类型声明的建议
  • 五、ESLint规则建议(可选)
  • 六、总结使用原则

JavaScript和TypeScript中,nullundefined这两个看似简单的概念,要是使用不当,很容易给代码带来混乱和隐患。为了让团队开发的代码更具一致性,读起来更清晰,后期维护也更轻松,咱们很有必要统一一下nullundefined的使用规则。下面就来详细讲讲它们的使用规范。

一、null与undefined的概念差异

在深入探讨使用规范之前,先得搞清楚nullundefined的区别。简单来说,undefined是系统默认的“未赋值”状态,就像是一个刚建好的空房子,还没来得及放东西,通常由JavaScript引擎自动赋予。而null则是明确表示“空”或者“没有值”的意思,这是程序员主动给变量设置的,用来表明这个变量处于“空”或者“无效”的状态,就好比你主动把房子里的东西都清空了。下面用表格来更直观地展示一下:

类型 含义 说明
undefined 系统默认的“未赋值”状态 通常由JavaScript引擎自动赋值
null 明确表示“空”或“无值” 由程序员主动赋值,表达“空”或“无效”状态

二、实际使用规范

(一)变量初始化

在初始化非基本类型变量(像对象、数组或者引用这些)的时候,推荐用null。例如:

let user: User | null = null;
let items: Item[] | null = null;

这么做可以清楚地表明这个变量在初始化时没有实际的值。而对于未初始化的变量,它本身就默认是undefined,所以千万不要手动把变量赋值为undefined

(二)对象属性处理

在处理对象属性时,如果这个属性可能暂时没有值,可以将其初始化为null,表示“暂时为空”的状态。比如:

interface Profile {
  avatarUrl: string | null;
}

但要注意,不要把对象属性赋值为undefined,用null来代替就好。

(三)函数参数与返回值

当函数的返回值为空的时候,最好返回null,尽量别用undefined。看下面这个例子:

function findUser(id: number): User | null {
  return users[id] ?? null;
}

对于函数的可选参数,使用?来声明,而不是| undefined。像这样:

function greet(name?: string) {
  const realName = name ?? \'Guest\';
}

(四)判断空值

在判断一个变量是否为空的时候,建议使用宽松等于== null 。例如:

if (value == null) {
  // 相当于 value === null || value === undefined
}

这种方式可以同时判断变量是null还是undefined。不过,只有在处理全局变量或者window属性的时候,才使用typeof value === \'undefined\' ,其他情况下尽量避免。

(五)清除引用优化垃圾回收

如果想要清除某个对象的引用,帮助浏览器更好地回收内存,可以使用null。比如:

largeObject = null;

这里不推荐使用delete obj.prop,用obj.prop = null会更好一些。

三、不符合规范的示例

下面这些写法是不符合我们制定的规范的:

// 不推荐
let data = undefined;
obj.value = undefined;
return undefined;

// 推荐
let data: SomeType | null = null;
obj.value = null;
return null;

从这些示例中可以更清楚地看到规范和不规范写法的区别,方便大家在实际编码中进行对照。

四、TypeScript类型声明的建议

在TypeScript里,对于那些可能不存在值的变量或者返回值,最好用| null明确标注出来。例如:

let token: string | null = null;

要是函数的参数是可选的,同样使用?来声明,而不是| undefined ,就像这样:

function load(id?: number) { ... }

五、ESLint规则建议(可选)

如果想在团队开发中更好地遵守这些规范,可以借助ESLint配置一些规则。下面是相关的配置示例:

{
  \"rules\": {
    \"no-undefined\": \"error\", // 禁止手动使用undefined
    \"@typescript-eslint/strict-boolean-expressions\": \"warn\",
    \"@typescript-eslint/no-unnecessary-condition\": \"warn\"
  }
}

这些规则可以在代码编写过程中及时提醒开发者,避免出现不符合规范的代码。

六、总结使用原则

  1. 当程序员主动给变量赋值表示“空”或“无值”时,请使用null
  2. 系统默认的缺省状态就是undefined,不需要我们手动赋值。
  3. 在清除对象引用以优化垃圾回收时,用null能起到很好的效果。
  4. 判断空值时,== null是个不错的选择,它能同时判断nullundefined
  5. 在进行类型声明时,优先使用| null ,函数参数如果可选,就用?

通过遵循这些规范,能让我们的JavaScript和TypeScript代码更加规范、易读,减少潜在的错误,提高开发效率,大家尽量都要遵循规范进行开发,这样后期维护也会方便很多。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/6911.html

管理员

相关推荐
2025-08-06

文章目录 一、Promise基础回顾 二、Promise 与 axios 结合使用场景及方法 (一)直接返回 axios …

269
2025-08-06

文章目录 一、模块初始化时的内部机制 二、常见导出写法的差异分析 (一)写法一:module.exports…

107
2025-08-06

文章目录 一、ResizeObserver详解 (一)ResizeObserver是什么 (二)ResizeObserver的基本用法 …

683
2025-08-06

文章目录 一、前期准备工作 (一)下载相关文件 (二)安装必要工具 二、处理扣子空间生成的文件…

338
2025-08-06

文章目录 一、官方文档 二、自动解包的数据类型 ref对象:无需.value即可访问 reactive对象:保持…

371
2025-08-06

文章目录 一、Hooks的工作原理 二、在if语句中使用Hook会出什么岔子? 三、React官方的Hook使用规…

843
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号