为什么以下代码中的正则表达式不会在常规应用程序中使用codespli0输入字符串是动态的,但是当它更改if语句时则不然。为什么呢?
//first iteration input string
codespli0 = "var test = 0"
//second iteration input string
codespli0 = "test 2"
//process
var strTest = new RegExp("var");
alert(strTest);
if(strTest=="/var/"){
var test = strTest.exec(codespli0);
codepara0.innerHTML+=test+"<br />";
}else{
codepara0.innerHTML+="this"+"<br />";
}
答案 0 :(得分:0)
简化代码应该有帮助:
var strTest = "/var/"
if( strTest == "/var/" ){
// Always runs this.
}else{
// Never runs this.
}
您正在设置变量,然后立即进行测试以查看它是否已设置为该值。我甚至不确定你的目标是什么,但是,那将永远是真的。你的if语句与codespli0
没有任何关系。
答案 1 :(得分:0)
在命令式编程中(我假设您的代码是JavaScript,因为您没有使用任何特定语言标记问题),{em>一次评估if
语句,并且<强>一次,在程序执行到达时。以此代码为例:
if (something) {
doSomething();
something = false;
} else {
doSomethingElse();
}
在此代码中,当达到if语句时,将检查something
的值以查看它是否为真(在大多数语言中不是0的任何内容)。如果计算结果为true,则将调用doSomething()
。否则,将调用doSomethingElse()
。
请注意,即使something
语句中false
更改为if
,else
条件也不会被执行,因为{{当评估if语句时,1}}为真。
如果你想多次运行同一段代码,你需要把它放在函数中并调用函数,传递不同的参数。
在您的代码中,您可能希望执行以下操作:
something
这样,您实际上是在运行代码来测试匹配两次,每次为function test (codespli0) {
var strTest = new RegExp("var");
var test = strTest.exec(codespli0);
if (test) {
codepara0.innerHTML += test + "<br />";
} else {
codepara0.innerHTML += "this" + "<br />";
}
}
test("var test = 0");
test("test 2");
的值一次,因为代码在函数中并且您正在调用每个值都有。