簡體   English   中英

“IF”條件內的變量賦值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM