利木
2017-01-18 09:56
同学代码里,排名第一的答案在写stringObject.substr(startPos,length)时,第九行的startPos直接用了字符串“H”,而结果页显示并没有错。但是参数说明里说了【startPos是子串的起始位置,必须是数值】,所以字符串也算数值吗?数值到底包括哪些内容?
另外,如果字符串不算数值,那么为什么结果页显示正确?
附同学代码:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<script type="text/javascript">
var mystr="Hello World!";
document.write( mystr.substr(mystr.indexOf("W")) + "<br />");
document.write(mystr.substr("H",mystr.indexOf(" ")) );
</script>
</head>
<body>
</body>
</html>
首先回答你的问题:字符串不是数值,数值就是数(number),不包括字符,也不包括字符串。
其次回答为什么你给出的代码能够显示“正确”的答案:纯属巧合。
你把 "H" 改成随便什么字符,都会显示一样的答案,不信你改成 "d" 试试看。
造成这种现象的原因,是因为 substr() 的第一个参数本该是 number 类型的,但 "H" 并不能被转换成 number 类型,所以这个 "H" 被解析成了 NaN。这个 NaN 是 number 类型的。
你可以把 substr 的参数 "H" 换成 NaN 来验证一下我这个说法。
最后解释一下其他同学说的“字符类型转成数值进行计算”的问题。C/C++ 是可以把字符变量看成整型的,但 Javascript 貌似必须显示转换才行。具体怎么转换,你可以参考这个链接的介绍:
http://www.runoob.com/js/js-type-conversion.html。
字符串属于数据类型 ,是原始值的一种。
数值是形容某个物体的数量。
字符串和数值是两回事,不能放在一起。
不属于,数值有byte short int long double float,在有时候需要进行转换,比如将字符类型转换成数值类型进行加减法计算,尽管字符串可以运用+、-对字符串进行连接,但是它还是不属于数值。
不属于啊,数值有byte short int long double float
JavaScript进阶篇
468196 学习 · 21891 问题
相似问题