【发布时间】:2013-02-24 07:19:44
【问题描述】:
原始问题:JavaScript 转换有问题。这是一个例子:
var obj = {
x: 0,
y: 1,
z: 2
}
var b1 = typeof (obj.x),
b2 = typeof (obj.y),
b3 = typeof (obj.z);
b1 是"boolean",b2 是"boolean",b3 是"number"。
我需要将变量设置为 0,并且需要 JavaScript 将其解释为数字。我尝试过诸如 b1 = Number("0") 之类的转换,但它没有帮助:(
已编辑:对上面的 q 感到抱歉。这是真的。 b1、b2 和 b3 都返回数字。这是我的实际问题。
var SomeClass = function () {}
SomeClass.prototype = {
element: {},
startAt: 0,
length: 2,
get: function (prop) {
if (typeof (prop) === "undefined" || !(typeof (prop) === "string")) {
return false;
}
if (!this[prop]) {
return false;
}
return this[prop];
}
}
var sc = new SomeClass();
alert(typeof (sc.get("startAt")) + "\n" + typeof (sc.get("length")) + "\n" + typeof (sc.get("element")));
我想将 startAt 设置为一个数字。真的很抱歉!!
【问题讨论】:
-
我刚刚试了一下......它根本没有说“布尔”。
-
Chrome 不同意您的报告。您使用的是什么浏览器/环境?
-
“b1 是“布尔”,b2 是“布尔”,b3 是“数字”” I beg to differ。根据规范,这三个都应该是
"number",并且都在我运行的测试中。我尝试过 Chrome、IE(旧的和新的)、Firefox、Opera... -
@ZiyaoWei 我怀疑是否存在具有这种行为的javascript引擎。问题一定出在 OP 的代码中。
-
@sweetamylase:是的,这是真的。但这不是 OP 所说的他所看到的。
标签: javascript typeof