首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript typeof()的行为异常

Javascript typeof()的行为异常
EN

Stack Overflow用户
提问于 2014-05-15 13:33:13
回答 3查看 100关注 0票数 0

W3Schools的变体... http://www.w3schools.com/js/tryit.asp?filename=tryjs_typeof...似乎认为“4”是一个字符串,这是预期的吗?我不这样认为。

代码语言:javascript
复制
<!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>
EN

回答 3

Stack Overflow用户

发布于 2014-05-15 13:37:59

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

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

票数 2
EN

Stack Overflow用户

发布于 2014-05-15 13:37:28

当您指定字符串类型的值时,typeof()将以字符串的形式返回它,正如您指定的typeof('4')一样,4被指定为字符串,因此它将返回字符串

如果您传递typeof(4),那么它将返回number

票数 0
EN

Stack Overflow用户

发布于 2014-05-15 13:42:08

按钮元素的值在这里是一个字符串。字符串值为"4“。持有"4“的对象是一个字符串对象。该字符串对象的第一个字节具有十六进制值34,而不是十进制值4。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23670024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档