0

我经常发现我编写的 IF 语句会立即引用条件语句的值。例如,假设我需要检查字符串是否与模式匹配:

if (mystring.match(/mypattern/) {
    var mymatch = mystring.match(/mypattern/)[1];
    ...
};

我怀疑我正在寻找的东西不存在,但我想知道您是否可以在 if 块中引用条件语句的值,就像在函数中引用“参数”一样。当然,在很多情况下,我可以这样重写它:

var mymatch = mystring.match(/mypattern/)[1];
if (mymatch) { ... };

但如果调用了一系列方法,这通常是不可能的。例如:

var mymatch = $('.myclass')[0].text().match(/mypattern/)[1];

...如果没有可调用 .text() 的项目 [0],则会引发异常。我错过了一些方便的速记吗?或者更好的组织事物的方式?只是好奇,真的——如果答案是否定的,我会继续生活。

4

1 回答 1

1

在相关的情况下,您可以使用赋值运算符在 JavaScript 中返回一个值的事实,例如,您可以编写如下内容:

if (assignedTest = testedValue) {
   //value of assignedTest is now available 
   //and conditional will only be executed if true

如果 RHS 兼容或设置正确,则可以使用此方法,它也是一个巨大的可读性问题,因为很容易将赋值=与比较==/混淆===

如果您特别有动力去追求这一点,您可以将这种类型的功能提取到一个以可靠方式运行的函数中:例如将闭包的结果分配给命名变量,并且您可以进一步调整行为以执行其他操作(例如在测试中可选地评估为不同的值)。最终,它主要是使一个简单的结构变得更复杂。

于 2012-11-02T02:04:00.777 回答