在php中,类似这样的东西很好:
<?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可以做到的吗?我尝试过但没有成功,不确定是否有某种特殊的语法或
您可以在JavaScript中执行相同的操作,但有一个关键区别。您不能在if子句中声明(本地作用域)变量,只能引用它。
所以,首先声明:
var someVar;
然后使用它,你想怎么用:
if (!(someVar = someFunction())) { /* do some stuff */ }
注意,您还必须用括号包装否定的表达式(!(expression))
然而,这将不起作用:
if (var someVar = someFunction()) { /* NOPE */ }
是的,这很好。但是,如果要反转(!
),则需要将赋值封装在括号中,否则会出现语法错误。
function myFunc() {
return false;
}
if(!(myVar = myFunc())) {
console.log('true');
}
工作示例
它也适用于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
在最后一种情况下,将赋值语句包装在括号中是很重要的,因为!
用于检查赋值语句的结果。
这是我(在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");
}