Javascript typeof()表现出意外

时间:2014-05-15 05:33:13

标签: javascript typeof

W3Schools的一个变种...... http://www.w3schools.com/js/tryit.asp?filename=tryjs_typeof .... 似乎在思考' 4'是一个字符串,这是预期的吗?我不这么认为。

<!DOCTYPE html>
<html>
<body>
<p>The global function typeof() returns the type of variables:</p>
<button id='Clothing-4' onclick="myFunction(this)">4</button>
<p id="demo"></p>
<script>
function myFunction(button) {
    var buttonID=button.id; //Button ID is [type]-[action]
    var buttonparts = buttonID.split('-');
    itemType=buttonparts[0];
//Tried using buttonparts[1];
    var buttonAction=buttonID.substr(buttonID.indexOf('-')+1,buttonID.length)
    document.getElementById("demo").innerHTML = 
    "|"+buttonAction+"|" + "<br>" + 
    typeof(buttonAction) + "<br>" + 
    typeof("john") + "<br>" + 
    typeof(3.14) + "<br>" +
    typeof(false) + "<br>" +
    typeof({name:'john', age:34});
}
</script>
</body>
</html>

3 个答案:

答案 0 :(得分:2)

是的,这是预期的。按钮的id表示为字符串;你知道这一点,因为你正在使用字符串相关函数(substr())来提取字符4。注意我是怎么说的。如果从字符串中提取一个或多个字符,则期望它们是字符串。 JavaScript不会自动解析从字符串中提取的每个字符,以查看它是否为数字。你必须自己使用parseInt()之类的东西。

请记住,typeof不进行任何解析。它查看表示您传递它的值的对象的实际类型。它会指出4Number"4"为字符串之间的区别。

答案 1 :(得分:0)

当你指定string类型的值时,typeof()会将它作为字符串返回,如你指定的typeof('4'),4被指定为字符串,所以它返回字符串

如果您通过typeof(4),则会返回号码

答案 2 :(得分:0)

button元素的值在这里是一个字符串。字符串值为&#34; 4&#34;。对象持有&#34; 4&#34;是一个字符串对象。此字符串对象的第一个字节具有十六进制值34而不是十进制值4.

因此函数 typeof 会返回正确的字符串作为对象的类型。您需要函数parseInt才能将数字字符串转换为数字值。

相关问题