我想知道是否可以比较int "1"
和字符串"!0"
,并使结果成立。
例如:
//Comparing 0 and "0" works...
var myVariable = 0;
var checkVariable = "0";
if(myVariable == checkVariable)
{
console.log('Works');
}
//Comparing 1 and "!0" doesn't work:
var myVariable = 1;
var checkVariable = "!0";
if(myVariable == checkVariable)
{
//I would LIKE this to be true!
console.log('This part doesn't work');
}
关于如何实现这一目标的任何想法?
我愿意接受建议,"!=0"
也会很好。
/////////////////////////////////////////////// /// 更新:
所以我现在正在尝试eval,结果如下:
var myVariable = 20;
var checkVariable = "20";
eval(myVariable,checkVariable);
//Returns "20", which is ok I guess, but it would be nice if it returned "true"
var myVariable = 21;
var checkVariable = "!20";
eval(myVariable,checkVariable);
//Returns "21", which is ok, but it would be nice if it returned "true"
var myVariable = 21;
var checkVariable = "20";
eval(myVariable,checkVariable);
//Returns "20", which is *wrong*
还在chrome的javascript控制台(@Ishita)中尝试了这个:
var myVariable = 21;
var checkVariable = "!20";
myVariable == eval(checkVariable);
//Returns "false", which should be "true" :/
答案 0 :(得分:2)
你可以使用" eval"实现你想要的功能。
答案 1 :(得分:2)
不要使用eval
它被广泛认为是Javascript最糟糕的部分之一,在这种情况下根本不需要。 (有关详细信息,请参阅此答案的底部)
这样的事情将是一个合适的解决方案:
JSFiddle:http://jsfiddle.net/CoryDanielson/zQjyz/
首先,设置checkVariables
的地图和实现预期比较的函数。所有这些函数都接受一个数字,并根据比较结果返回true / false。
var checkFunctions = {
"0": function(num) { return parseFloat(num) === 0 },
"!0": function(num) { return parseFloat(num) !== 0; }
};
接下来,修改if语句,根据checkFunction
获取正确的checkVariable
,并将myVariable
传递给该函数。
//Comparing 0 and "0" works...
var myVariable = 0;
var checkVariable = "0";
if ( checkFunctions[checkVariable](myVariable) )
{
console.log(myVariable + " equals zero");
}
//Comparing 1 and "!0" doesn't work:
var myVariable = 1;
var checkVariable = "!0";
if ( checkFunctions[checkVariable](myVariable) )
{
console.log(myVariable + " does not equal zero.");
}
eval()是一个危险的函数,它执行它传递的代码 具有来电者的特权。如果使用字符串运行eval() 可能会受到恶意方的影响,您最终可能会运行 具有您的权限的用户计算机上的恶意代码 网页/扩展程序。更重要的是,第三方代码可以看到 调用eval()的范围,可能导致可能的攻击 以类似功能不易受影响的方式。
eval()通常也比替代品慢,因为它必须 调用JS解释器,同时优化许多其他构造 通过现代JS引擎。
对于常见的eval()有安全(和快速!)的替代方案 用例。
答案 2 :(得分:1)
这有效:
var a = 1;
var b = "!0";
if(a == eval(b))
{
console.log(true);
} else {
console.log(false);
}
答案 3 :(得分:1)
使用parseInt
将字符串解析为整数if(parseInt("1")!=parseInt("0"))
{
console.log('Try this');
}