javascript中参数类型不匹配的eval条件

javascript中参数类型不匹配的eval条件,javascript,Javascript,我有剧本 <script type="text/javascript"> a = eval("dog!='cat'"); document.write(a); </script> a=评估(“狗!=“猫”); 文件。编写(a); 它给出的是“狗没有定义”。但我想要真/假。 如果我把 <script type="text/javascript"> a = eval("'dog'!='cat'"); docum

我有剧本

<script type="text/javascript">
   a = eval("dog!='cat'");
   document.write(a);
</script>

a=评估(“狗!=“猫”);
文件。编写(a);
它给出的是“狗没有定义”。但我想要真/假。 如果我把

    <script type="text/javascript">
       a = eval("'dog'!='cat'");
       document.write(a);
    </script>

a=评估(“狗”!=“猫”);
文件。编写(a);
它起作用了。 但我不能给狗加引号,因为条件是动态生成的,任何人都可以建议其他方法。
这里猫有引号,但狗没有引号。

如果你想让你的操作

  • 如果
    dog
    未定义,则返回
    false
  • 否则返回
    的比较结果
只要写

((typeof dog != 'undefined') && (dog != 'cat'))
您完全不需要
eval
调用。上面的表达式返回一个布尔值,因此

a = ((typeof dog != 'undefined') && (dog != 'cat'))
document.write(a);

另外,我不太清楚“条件动态生成”是如何生成的,但无论如何,您都可以这样做,即
dog
是一个变量(可能是字符串),因此您可以使用此代码。

如果您试图比较的值来自页面上的文本框,您必须先获取该文本框的值并存储它

例如:

<input type="text" id="dogText" />
确保使用
=
==取决于您实际寻找的内容

也许你想做这样的事

您说过您的“条件是动态生成的”吗?你是说字符串是动态生成的吗?如果是这样的话,那就意味着你从某处得到了狗

var str = 'dog'
var condition = "'" + str + "'!='cat'";
这会在中添加引号,它们似乎缺失在哪里


然后我又一次偏离了目标。。您是否定义了
dog
cat
?如果是这样的话,你能把代码显示在你定义它的地方吗?另外,你知道我没有定义任何位置。它来自我页面上的文本框。我正在动态创建表单。
eval()
是邪恶的lol!顺便说一句@sandipkaranjekar你知道JavaScript中
dog
'dog'
之间的区别吗?假设我必须在文本框中输入dog值,并且“cat”是该文本框的条件,那么我想用当前值计算该条件。我无法删除eval函数,因为它用于其他条件还有。@sandipkaranjekar是的,你可以。而是
eval(“一些代码”)你可以只写一些代码。您可以编写
x=some\u表达式,而不是
x=eval(“some\u表达式”)
。使用
eval
,您将在解释您常用代码的解释器中启动一个新的JS解释器实例。程序员的直觉应该提示您,这是不必要的,至少在表单验证这样的简单情况下是不必要的。
var str = 'dog'
var condition = "'" + str + "'!='cat'";