Javascript slice()使用中的Bug没有效果?

Javascript slice()使用中的Bug没有效果?,javascript,slice,Javascript,Slice,我注意到正确的 return str.slice(0, res); 返回与错误值相同的值 var str = "some_string"; return str.slice(str, res); 在本例中,str是一个字符串,res是一个数字量 我的猜测是,由于slice需要一个数字量,而没有得到一个(对于第一个参数),它会将找到的值转换为0 这是预期的行为吗 我的猜测是,由于slice需要一个数字量,而没有得到一个(对于第一个参数),它会将找到的值转换为0 那太好了.slice调用第一个参

我注意到正确的

return str.slice(0, res);
返回与错误值相同的值

var str = "some_string";
return str.slice(str, res);
在本例中,
str
是一个字符串,
res
是一个数字量

我的猜测是,由于slice需要一个数字量,而没有得到一个(对于第一个参数),它会将找到的值转换为0

这是预期的行为吗

我的猜测是,由于slice需要一个数字量,而没有得到一个(对于第一个参数),它会将找到的值转换为0

那太好了
.slice
调用第一个参数,而第一个参数反过来调用。但如果该值无法转换为数字(如果结果为
NaN
),则返回
0


因此,如果将数字字符串作为start传递,
.slice
将从该字符串的数学值开始。任何其他字符串转换为
0

JavaScript提供隐式类型强制。这意味着如果需要一个整数(这里就是这种情况),它将使用提供给整数的值。如果无法预测出合理值,则使用零

如果提供了整数,那就太好了

如果提供了一个字符串,并且它看起来像一个整数(例如
str.slice(“5”,res)
),它将被转换为预期的整数


如果提供的字符串看起来不像数字(例如
str.slice(“abc”,res)
),则使用
0

让我们看看:。是,如果无法将
str
转换为不同于
NaN
的值,则应为。参见。查看@Felix链接到的注释,注5。“让RealVestART成为ToInteger(start)”。我把错误放在(数组而不是字符串)中,但是在这方面都是相同的。你认为一个字符串<代码> 5 < /C>(相对于整数<代码> 5代码>)是一个“数字量”吗?谢谢,我总是去MDN学习更多关于JS方法的知识,但是ES规范似乎更好。是的,MDN很好地了解了什么是可用的以及如何使用它,但是如果你想深入解释为什么事情会以这种方式工作,你必须去规范。