在 PHP 中你可以这样写:
if(false !== ($value = someFunctionCall())) {
// use $value
}
如果没有定义,你将如何在 JavaScript 中编写等效的 this
var value;
在这个比较之前?
在 PHP 中你可以这样写:
if(false !== ($value = someFunctionCall())) {
// use $value
}
如果没有定义,你将如何在 JavaScript 中编写等效的 this
var value;
在这个比较之前?
你会写
if (value = someFunction()) {
我不太相信我对 PHP 的了解,但我怀疑没有必要与false
inif
语句进行显式比较,因为表达式是隐式布尔值。(编辑——有时,如果一个函数可以返回一个显式的布尔值或一些“好”的值,评估结果为“假”,那么是的,你确实需要与布尔值进行显式比较。)
编辑-如果您对=
and之间由来已久的混淆(或潜在的混淆)感到不安==
,那么我建议您完全避免该构造。除了有时需要相等比较而有时需要赋值之外,这并没有什么问题。
编辑哦,这也假定“值”已在var
某处声明- 如果问题是关于如何在语句的上下文中进行声明if
,那么答案是你不能这样做。
最后的编辑我有点保证——总结一下:
假设声明了“值”:
var value;
某处,然后:
if (false !== (value = someFunction())) { ... }
具有与 PHP 原版几乎相同的语义。
你可以让它在执行时赋值,JavaScript 会自动添加var
声明:
function foo(){
return (Math.random() * 0.5) > 0;
}
if (false !== (f = foo())){
alert('True!');
}
alert('f=' + f.toString());
但是,这是非常糟糕的做法。您应该始终首先在需要它们的时间和地点声明您的变量。仅仅因为 PHP 和 JS 接受这种语法并不意味着它是好的做法。正确的样式如下:
var f = false;
if (false !== (f = foo())){
alert('True!');
}
alert('f=' + f.toString());
这在 JavaScript 中将是非常糟糕的做法,
你最好这样做
if(!(var value = someFunctionCall())) { // use value //}
我个人会说之前定义它。不过你的电话。如果您担心内存,请定义它并在使用后将其清空。