以下语法在PHP中完全正常:
if($data = check_database($conds)) var_dump($data);
else echo "Not found";
但是,在Javascript中,我找不到相应的简写:
/*THIS CREATES A GLOBAL VARIABLE:*/
if(data = check_database(conds)) console.log(data);
else console.log("Not found.");
/*THIS RESULTS IN A SYNTAX ERROR (unexpected token var):*/
if(var data = check_database(conds)) console.log(data);
else console.log("Not found.");
我有没有办法在if
(和其他)语句中声明Javascript中的本地范围的var。 注意:对于期望完整语句作为参数的for
语句,这不是问题。
最终,我想避免使用以下详细语法:
/*THIS HAS THE DESIRED EFFECT, BUT UNDESIRED (VERBOSE) SYNTAX*/
var data;
if(data = check_database(conds)) console.log(data);
else console.log("Not found.");
答案 0 :(得分:5)
这里的答案是你不应该首先尝试编写类似的代码。
你可能对自己聪明的极简主义代码充满信心,但有人阅读它会花费时间和精力来确定你是否真的打算使用单=
,或者输入拼写错误==
。
只需编写明确意图的代码,并留下最小的错误空间。一些额外的行不会伤害到你:
var data = check_database(conds);
if (data) {
console.log(data);
} else {
console.log("Not found.");
}
<小时/> 附录:如果您真的觉得必须使用
data
变量三次而不是两次令人反感,那么另一种方法就是编写辅助函数:
function handleData(data, success, failure) {
if (data) {
success(data);
return data;
}
failure();
return null;
}
然后你可以像这样使用它:
handleData(check_database(conds), function (data) {
console.log(data);
}, function () {
console.log("Not found.");
});
这比我原来的例子少了一行,但是引入了许多不必要的开销和头痛,确保所有的括号和括号都匹配。此外,它还不太清楚,因为阅读它的人需要弄清楚/记住辅助功能的作用。
答案 1 :(得分:0)
这个具体的例子看起来像你可以重写为
console.log( check_database(conds) || "Not found." );
但通常情况下,你会离开:
if ( check_database(conds) ){
console.log( data );
}
else {
console.log( "Not found." );
}
或
var data = check_database(conds);
// maybe some other stuff
console.log( data || "Not found." );
甚至
var data = check_database(conds);
if ( data ){
// some if true stuff
console.log( data );
}
else {
// some if false stuff
console.log( "Not found." );
}