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

时间:2012-07-20 10:38:48

标签: javascript

我有脚本

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

它给出了“狗没有定义”。但我想要真/假。 如果我放,

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

有效。 但我不能把引号放到狗身上,因为条件是动态生成的,任何人都可以提出任何其他方法来做到这一点。 这里猫有引号,但是狗没有引号。

2 个答案:

答案 0 :(得分:1)

如果您想进行操作

    如果false未定义,
  • 返回dog
  • 返回dog'cat'的比较结果,否则

写一下

((typeof dog != 'undefined') && (dog != 'cat'))

您绝对不需要eval来电。上面的表达式返回一个布尔值,所以你只需要

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

另外,我并不完全明白,你的“条件是如何动态生成的”,但无论如何你都可以这样做,你可以这样做,dog是一个变量(可能是一个字符串) ,所以你可以使用这段代码。

答案 1 :(得分:0)

如果您要比较的值来自网页上的文本框,则您必须先获取该文本框的值并将其存储起来。

以例如:

<input type="text" id="dogText" />

您想要将该文本框中输入的文字与'cat'进行比较 首先,你需要获得价值。试试jQuery。

var dog = $("#dogText").val();
a = (dog !== cat);

请务必使用!=!==,具体取决于您实际需要的内容。

或者也许你想尝试做这样的事情?

你说你的'条件是动态生成的'?你的意思是字符串是动态生成的吗?如果是这种情况,则意味着您从某处获得dog ..

var str = 'dog'
var condition = "'" + str + "'!='cat'";

这会添加引号,它们似乎缺失了吗?

然后我又可以 WAY 再次离开标记..