0

在 PHP 中你可以这样写:

if(false !== ($value = someFunctionCall())) {
 // use $value
}

如果没有定义,你将如何在 JavaScript 中编写等效的 this

var value;

在这个比较之前?

4

3 回答 3

1

你会写

if (value = someFunction()) {

我不太相信我对 PHP 的了解,但我怀疑没有必要与falseinif语句进行显式比较,因为表达式是隐式布尔值。(编辑——有时,如果一个函数可以返回一个显式的布尔值一些“好”的值,评估结果为“假”,那么是的,你确实需要与布尔值进行显式比较。)

编辑-如果您对=and之间由来已久的混淆(或潜在的混淆)感到不安==,那么我建议您完全避免该构造。除了有时需要相等比较而有时需要赋值之外,这并没有什么问题。

编辑哦,这也假定“值”已在var 某处声明- 如果问题是关于如何在语句的上下文中进行声明if,那么答案是你不能这样做。

最后的编辑我有点保证——总结一下:

假设声明了“值”:

var value;

某处,然后:

if (false !== (value = someFunction())) { ... }

具有与 PHP 原版几乎相同的语义。

于 2012-07-24T13:24:15.340 回答
0

你可以让它在执行时赋值,JavaScript 会自动添加var声明:

function foo(){
    return (Math.random() * 0.5) > 0;
}
if (false !== (f = foo())){
    alert('True!');
}
alert('f=' + f.toString());

jsFiddle 示例

但是,这是非常糟糕的做法。您应该始终首先在需要它们的时间和地点声明您的变量。仅仅因为 PHP 和 JS 接受这种语法并不意味着它是好的做法。正确的样式如下:

var f = false;
if (false !== (f = foo())){
    alert('True!');
}
alert('f=' + f.toString());
于 2012-07-24T13:26:04.630 回答
-1

这在 JavaScript 中将是非常糟糕的做法,

你最好这样做

if(!(var value = someFunctionCall())) { // use value //}

我个人会说之前定义它。不过你的电话。如果您担心内存,请定义它并在使用后将其清空。

于 2012-07-24T13:24:23.627 回答