Javascript typeof() 表现异常

标签 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>

最佳答案

是的,这是预料之中的。按钮的 id 表示为字符串;您知道这一点,因为您正在使用字符串相关函数 (substr()) 来提取字符 4。请注意我是如何说性格的。如果从字符串中提取一个或多个字符,则期望它们是字符串。 JavaScript 不会自动解析从字符串中提取的每个字符以查看它是否是数字。您必须自己使用 parseInt() 之类的方法来完成此操作。

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

关于Javascript typeof() 表现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23670024/

相关文章:

javascript - 图像未调整 Bootstrap 3 的大小

c# - System.Type.FullName 的意外值

r - is.atomic() 与 is.vector()

javascript - 测试VueJS组件时如何将数据设置到this.$root?

javascript - 如何将 CSV 数据从变量下载到 csv 文件?

JavaScript:null 是什么数据类型?

vb.net - 带有泛型的 VB typeof 运算符

c++ - decltype 和 typeof 的区别?

javascript - 基于geojson数据的传单标记

Javascript 淡入/淡出 "stacking"