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>
答案 0 :(得分:2)
是的,这是预期的。按钮的id
表示为字符串;你知道这一点,因为你正在使用字符串相关函数(substr()
)来提取字符4
。注意我是怎么说的。如果从字符串中提取一个或多个字符,则期望它们是字符串。 JavaScript不会自动解析从字符串中提取的每个字符,以查看它是否为数字。你必须自己使用parseInt()
之类的东西。
请记住,typeof
不进行任何解析。它查看表示您传递它的值的对象的实际类型。它会指出4
为Number
和"4"
为字符串之间的区别。
答案 1 :(得分:0)
当你指定string类型的值时,typeof()
会将它作为字符串返回,如你指定的typeof('4')
,4被指定为字符串,所以它返回字符串
如果您通过typeof(4)
,则会返回号码
答案 2 :(得分:0)
button元素的值在这里是一个字符串。字符串值为&#34; 4&#34;。对象持有&#34; 4&#34;是一个字符串对象。此字符串对象的第一个字节具有十六进制值34而不是十进制值4.
因此函数 typeof 会返回正确的字符串作为对象的类型。您需要函数parseInt才能将数字字符串转换为数字值。