You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中null的用法及星期几练习问题求助

关于JavaScript中null的理解与你的星期几练习问题解析

嘿,我来帮你把这两个问题掰扯清楚!

一、先搞懂null到底是什么

  • null是JavaScript里的原始数据类型,它的核心意义是:刻意表示一个空值——就是你明确知道这个地方“应该有值,但现在没有有效数据”,所以用null来标记它。
  • 和undefined要区分开:undefined一般是变量没初始化、函数没写返回值时的默认状态;而null是你主动给的“空”,是一种明确的状态。
  • 像你练习里的场景就是null的典型用法:当输入不符合要求时,主动返回null,告诉调用者“这个输入没有对应的有效结果”。

二、你的星期几练习代码问题出在哪

先看你写的条件判断:if (1 <= num <= 7),这是JS新手很容易踩的坑!JavaScript会从左到右依次计算这个表达式:

  1. 先算1 <= num,得到一个布尔值(true或者false)
  2. 然后把这个布尔值和7比较——JS里布尔值true会转成1,false转成0
  3. 所以不管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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:30:50