【发布时间】:2015-04-22 16:05:03
【问题描述】:
我不知道这是否是一个错误,但感觉有点奇怪。您可以使用javascript将函数返回的布尔值存储在变量中吗?每当我尝试将布尔值存储在函数返回的变量中时,它都会更改为字符串。
我有以下函数将字符串转换为布尔值
function str2bool(strvalue){
console.log("Value is - " + strvalue);
console.log("Type is - " + typeof strvalue);
return (strvalue && typeof strvalue == 'string') ? (strvalue.toLowerCase() == 'true') : (strvalue == true);
}
我在 StackOverflow 上的某个地方找到了这个函数,但我不记得它的作者,所以如果你正在阅读这篇文章,抱歉我没有给出适当的学分:)
我有另一个 javascript 行,如下所示:
target.prop('disabled',str2bool(booleanInStringFormat));
console.log("Typeof str2bool return is - " + typeof str2bool(booleanInStringFormat));
如果我以这种方式使用它,一切正常,str2bool 函数将以下行返回到控制台:
值为 - 假
类型为 - 字符串
而主函数返回后的那一行:
str2bool 函数的类型是 - boolean
但是如果我尝试将 str2bool 的返回值存储在一个变量中,然后再使用它,prop 函数将不起作用,因为显然我用来存储 str2bool 的返回值的变量变成了一个字符串。如果我运行此代码,我会得到以下结果:
status = str2bool(booleanInStringFormat);
console.log("Typeof status is - " + typeof status);
target.prop('disabled',status);
结果如下:
值为 - 假
类型是 - 字符串
状态类型为 - 字符串
最终结果是目标仍处于禁用状态
那么,为什么我存储函数返回的变量的typeof改回了string呢?
【问题讨论】:
-
是的,这是隐式字符串转换。 某事
+字符串==字符串。总是(大部分时间)。 -
但最终结果中没有添加任何内容...
-
好吧,也许我误会了……随便。
标签: javascript