[英]variable assignment inside 'IF' condition
在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");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.