使用slice()的bug没有效果?

时间:2014-05-27 17:46:07

标签: javascript slice

我注意到了正确的

return str.slice(0, res);

返回与错误

相同的值
var str = "some_string";
return str.slice(str, res);

在这种情况下,str是一个字符串,res是一个数字数量。

我的猜测是因为切片需要一个数字量并且没有得到一个(对于第一个参数),它将它找到的内容转换为0。

这是预期的行为吗?

2 个答案:

答案 0 :(得分:1)

JavaScript提供隐式类型强制。这意味着如果期望一个整数(如这里的情况),它将convert提供给整数的值。如果不能判断合理的值,则使用零。

如果提供了整数,那就太棒了!

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

如果提供了字符串并且它看起来不像数字(例如str.slice("abc", res)),则使用0

答案 1 :(得分:0)

  

我的猜测是因为切片需要一个数字量并且没有得到一个(对于第一个参数),它将它找到的内容转换为0。

那是basically what happens.slice在第一个参数上调用ToInteger,后者又调用ToNumber。但如果该值无法转换为数字(如果结果为NaN),则返回0

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