编辑:为什么typeof(0)返回布尔值而不是数字?
EDIT: Why does typeof(0) return boolean instead of number
原文问题:我有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 =数字("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设置为一个数字。真的很抱歉!!
我想把startAt设置为一个数字。
SomeClass.prototype.startAt
是一个数字(0
)。
如果属性为"false ",则get
函数显式返回false
:
if(!this[prop]){return false;}
在JavaScript中,0
, ""
, false
, undefined
和null
都是"false ",因此上述条件将为真,并导致get
返回false
。
如果您的目标是返回false
,如果属性不存在,您可以这样做:
if (!(prop in this)) { return false; }
这将检查属性是否存在于对象本身或它的原型,我怀疑这是你想要的。但是如果你只想检查对象本身而忽略原型上的属性,那就是:
if (!this.hasOwnProperty(prop)) { return false; }
综上所述,如果您的目标是让get
返回false
对象不具有的属性(无论是它自己的,还是通过它的原型),那么:
get : function(prop){
if (typeof prop !== "string" || !(prop in this)) {
return false;
}
return this[prop];
}
我在这里做了一些事情:
typeof
是一个操作符,而不是一个函数,所以你不能在它的操作数周围使用父元素(通常)由于
"undefined"
是!== "string"
,所以在检查prop
是否为字符串时不需要特别检查。我使用
!(prop in this)
来查看对象(或其原型)是否具有属性。我将返回
false
的两个条件合并为使用||
的单个if
语句。
相关文章:
- 如何从javascript/jquery中的复选框中获取布尔值
- KendoUI网格行过滤器,带有布尔值下拉列表
- php布尔值's小写AND大写和数字布尔值'可以接受
- select中布尔值的Angularjs ng值不起作用
- 由于布尔值的变化,Django视图中的字符串格式不正确
- MeteorJs Alded autoform,如何从布尔值复选框中获得所需值
- 将字符串动态转换为布尔值
- 将布尔值存储在隐藏字段中以进行表单处理
- 类型错误:布尔值不是 Angular 中登录函数的函数
- Yui Get 复选框返回数组而不是布尔值
- 为什么 1.2 == true 返回 false 如果布尔值 (1.2) 实际上是真的
- 为什么第一个将其视为布尔值,其次不将其视为布尔值
- 检查布尔值并将其转换为对象中的数字
- JavaScript:为什么布尔值的按位 OR 返回一个数字而不是一个布尔值
- 警告:React.createElement:类型不应为空、未定义、布尔值或数字
- 字符串转换为未定义/空值/数字/布尔值
- 按布尔值,然后按数字(javascript)对对象数组进行排序
- 流星空格-期望的标识符,数字,字符串,布尔值或null
- 编辑:为什么typeof(0)返回布尔值而不是数字?
- 布尔值与数字比较中的 JavaScript 真实性