<?php
if ( !$my_epic_variable = my_epic_function() ){
// my epic function returned false
// my epic variable is false
die( "false" );
}
echo $my_epic_variable;
?>
我认为这是一种较短的做法:
$my_epic_variable = my_epic_function();
if ( !$my_epic_variable ){
die( "false" );
}
可以这样做是javascript吗?我试过没有成功,不确定是否有某种特殊的语法或什么
答案 0 :(得分:3)
是的,这很好。但是,如果您正在反转(!
),那么您需要将赋值括在括号中,否则会出现语法错误。
function myFunc() {
return false;
}
if(!(myVar = myFunc())) {
console.log('true');
}
答案 1 :(得分:3)
您可以在JavaScript中执行相同操作,只有一个关键区别。 你不能在if子句中声明一个(本地范围的)变量,你可能只能引用它。
所以,先声明:
var someVar;
然后根据需要使用它:
if (!(someVar = someFunction())) { /* do some stuff */ }
请注意,您还必须用括号
包装否定表达式(!(expression))
然而,这不起作用:
if (var someVar = someFunction()) { /* NOPE */ }
答案 2 :(得分:2)
它也适用于JS:
var foo = null;
if ( foo = 1 ){
// some code
}
alert (foo); // 1
或者甚至使用函数进行分配:
var foo = null;
function getFoo(){
return 1;
}
if ( foo = getFoo() ){
// some code
}
alert (foo); // 1
有了否定,你需要添加大括号:
var foo = null;
function getFoo(){
return 1;
}
if (! (foo = getFoo()) ){
// some code
}
alert (foo); // 1
在最后一种情况下,将赋值语句包装在括号中非常重要,因为!
随后用于检查结果。
答案 3 :(得分:2)
这是我(在PHP中)的首选方法,因为它绝对清楚地表明您并不是要使用==
条件但是犯了错误。
if ( ($my_epic_variable = my_epic_function()) !== NULL ){
// my epic function returned false
// my epic variable is false
die( "false" );
}
在JavaScript中,我可能会这样做:
function my_epic_function() {
return 5;
}
var my_epic_variable;
if ( (my_epic_variable = my_epic_function()) !== null ){
alert("we're in");
}