0

为什么以下代码中的正则表达式永远不会,codepli0 输入字符串在常规应用程序中是动态的,但是当它更改 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 />";
}
4

2 回答 2

0

在命令式编程中(我假设您的代码是 JavaScript,因为您没有使用任何特定语言标记问题),if语句在程序执行到达它时被评估一次,并且仅评估一次。以这段代码为例:

if (something) {
    doSomething();
    something = false;
} else {
    doSomethingElse();
}

在这段代码中,当到达 if 语句时,something将检查 的值是否为真(在大多数语言中不为 0 的任何值)。如果它评估为真,doSomething()将被调用。否则,doSomethingElse()将被调用。

请注意,即使something更改为falseif语句中,else条件也不会被执行,因为在 if 语句被评估时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");

这样,您实际上是在运行代码来测试匹配两次,每个值一次codespli0,因为代码在一个函数中,并且您正在为每个值调用它。

于 2013-07-26T13:04:16.397 回答
0

简化代码在这里应该有所帮助:

var strTest = "/var/"
if( strTest == "/var/" ){
    // Always runs this.
}else{
    // Never runs this.
}

您正在设置变量,然后立即测试以查看它是否已设置为该值。我什至不确定您的目标是什么,但是是的,这总是正确的。您的 if 语句与codespli0.

于 2013-07-26T12:52:51.740 回答