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>
最佳答案
是的,这是预料之中的。按钮的 id
表示为字符串;您知道这一点,因为您正在使用字符串相关函数 (substr()
) 来提取字符 4
。请注意我是如何说性格的。如果从字符串中提取一个或多个字符,则期望它们是字符串。 JavaScript 不会自动解析从字符串中提取的每个字符以查看它是否是数字。您必须自己使用 parseInt()
之类的方法来完成此操作。
请记住,typeof
不进行任何解析。它查看代表您传递给它的值的对象的实际类型。它将指出 4
作为 Number
和 "4"
作为字符串之间的区别。
关于Javascript typeof() 表现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23670024/