问答详情
源自:7-11 提取指定数目的字符substr()

字符串属于数值吗?数值到底包含哪些?

同学代码里,排名第一的答案在写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>


提问者:利木 2017-01-18 09:56

个回答

  • 慕丝8281456
    2017-01-18 20:59:18
    已采纳

    首先回答你的问题:字符串不是数值,数值就是数(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。

  • 林瓦儿
    2017-01-18 14:17:28

     字符串属于数据类型 ,是原始值的一种。

     数值是形容某个物体的数量。

    字符串和数值是两回事,不能放在一起。 


  • qq_芷若初荨_uDHOW2
    2017-01-18 10:48:43

    不属于,数值有byte short int long double float,在有时候需要进行转换,比如将字符类型转换成数值类型进行加减法计算,尽管字符串可以运用+、-对字符串进行连接,但是它还是不属于数值。

  • 慕粉3172853
    2017-01-18 10:28:45

    不属于啊,数值有byte short int long double float