JavaScript中null的用法及星期几练习问题求助
关于JavaScript中null的理解与你的星期几练习问题解析
嘿,我来帮你把这两个问题掰扯清楚!
一、先搞懂null到底是什么
- null是JavaScript里的原始数据类型,它的核心意义是:刻意表示一个空值——就是你明确知道这个地方“应该有值,但现在没有有效数据”,所以用null来标记它。
- 和
undefined要区分开:undefined一般是变量没初始化、函数没写返回值时的默认状态;而null是你主动给的“空”,是一种明确的状态。 - 像你练习里的场景就是null的典型用法:当输入不符合要求时,主动返回null,告诉调用者“这个输入没有对应的有效结果”。
二、你的星期几练习代码问题出在哪
先看你写的条件判断:if (1 <= num <= 7),这是JS新手很容易踩的坑!JavaScript会从左到右依次计算这个表达式:
- 先算
1 <= num,得到一个布尔值(true或者false) - 然后把这个布尔值和7比较——JS里布尔值true会转成1,false转成0
- 所以不管num是8还是-1,
1 <= num得到false(也就是0),0<=7是true;num是8的话1<=8是true(也就是1),1<=7也是true,导致这个条件永远为true!超出1-7范围的输入根本不会进入else返回null,只是返回days[num-1](比如num=8时会返回days[7],而你的数组只有7个元素,索引是0-6,所以会得到undefined)。
修正后的代码
const days = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']; let returnDay = (num) => { // 正确的范围判断:同时满足num大于等于1,且小于等于7 if (num >= 1 && num <= 7) { return days[num - 1]; } else { return null; } };
再测试几个边界情况
returnDay(1)→ Monday(没问题)returnDay(7)→ Sunday(没问题)returnDay(0)→ null(正确)returnDay(8)→ null(现在能正确返回了!)returnDay(-5)→ null(也能正确处理负数输入)
内容的提问来源于stack exchange,提问作者natsu_0
相关产品推荐
相关产品推荐

