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

为何JavaScript中slice(-3, 0)无法得到预期字符串?

问题解析与解决方案

为什么 slice(-3, 0) 返回空字符串?

JavaScript 的 slice(start, end) 方法遵循以下核心规则:

  • 负数的 start 参数会被转换为「字符串总长度 + 负数数值」,比如对长度为5的'12345',-3会被转为 5 + (-3) = 2。
  • end 参数指定截取的结束位置(不包含该位置的字符),如果传0就表示截取到索引0的位置。
  • 关键判定:当转换后的 start 大于等于 end 时,slice 直接返回空字符串。这里start是2,end是0,满足2 >= 0,所以结果为空。

而你第一次写的slice(-3)因为只传了start,end默认是字符串的总长度(5),相当于从索引2截取到5,自然得到'345'。

如何实现预期得到'345'?

有几种直接的写法:

  • 保持只传start参数:console.log('12345'.slice(-3));(就是你第一个成功的写法)
  • 显式传入正确的end参数:console.log('12345'.slice(-3, 5)); 或者 console.log('12345'.slice(-3, undefined));(undefined会触发end使用默认值)
  • 直接使用正数索引:console.log('12345'.slice(2));

内容的提问来源于stack exchange,提问作者Alexander Mills

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:45:39