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'";