2014-02-23 107 views
0

我沒有完成我的腳本或任何東西,所以我不能發佈代碼。基本上我需要一個變量來改變並繼續增加一個函數,直到它到達目的地。喜歡的東西:如何將變量更改爲某些未定義的變量?

function one(a) { 
    var x = a; 
    var max = 3; 
    if (a < 3) { 
     // some code 
     two(x); 
    } else { 
     // function will end here quitting the whole thing and possibly other code 
    } 
} 
function two(x) { 
    var change = x+1; 
    one(change); 

} 

它所有的工作我怎麼需要它,但是當我第一次進入功能一個我將如何使它所以當x =一個不具有價值,這將被默認爲0?

像...

function one(a) { 
    var x = a; 
    var max = 3; 
    if (x = undefined) { 
     x = 0; 
    } else { 
     if (x < 3) { 
      // some code 
      two(x); 
     } else { 
      // function will end here quitting the whole thing and possibly other code 
     } 
    } 
} 
function two(x) { 
    var change = x+1; 
    one(change); 

} 

任何想法?

+0

'x = a || 0' –

+0

這是做什麼和語法是什麼?我已經看到了這個,同時搜索類似的東西,不知道那是什麼?這些管道的語法與批處理和bash等命令行界面相同嗎? – XRipperxMetalX

+0

我更新了[my fiddle](http://jsfiddle.net/Jonathan_Ironman/pTVEb/1/)來更好地解釋它。 – Jonathan

回答

0

您可以檢查變量是否已定義,並使用短手條件將其發送到函數參數中。

typeof(a)=="undefined" ? 0 : a; 

您可以更改您的代碼:

function one(a) { 
    var x = (typeof(a)=="undefined" ? 0 : a); 
    var max = 3; 
    if (x < 3) { 
     // some code 
     two(x); 
    } else { 
     // function will end here quitting the whole thing and possibly other code 
     return; 
    } 
} 

小提琴:http://jsfiddle.net/gBBL2/

1

你可以這樣做:

function one(a) { 
    var x = a || 0; 
    if (x < 3) { 
     //debugger; 
     two(x); 
    } else { 
     // function will end here quitting the whole thing and possibly other code 
     alert('Done'); 
    } 
} 

function two(x) { 
    x++; 
    one(x); 
} 

one(); 

FIDDLE

var x = a || 0意味着xa如果a可以斷言爲true0
x++意味着x = x + 1

+0

啊哈!這就說得通了。現在我的腳本中有一個for循環。 x ++會不會偶然與任何事情混淆? – XRipperxMetalX

+0

不,'x ++'只是'x = x + 1'的簡稱。完全一樣。 – Jonathan

+0

最初的代碼並沒有改變函數two()中的x,但由於數字是基本類型,所以它們通過值傳遞,而不是引用,所以沒關係。 (函數two()可以更短,但更難讀: 'function two(x){one(++ x); }' –

0
var x = (typeof a === 'undefined') ? 0 : a; 

如果a未定義,使用0。否則使用a作爲值x