2014-12-02 71 views
1

我在JavaScript上使用字符串操作,我是JS中的新手。這是我的代碼。Java腳本返回undefined

function updateCLOB(row) { 
    var attrStr = row.get('CLOB_DATA'); 

    if (attrStr == null && attrStr == undefined) { 
    return row; 
    } else { 
    var res = attrStr.split('||'); 

    for (i = 0; i < res.length; i++) { 
print('RES'=res[i]); 
     var temp = res[i].split('/'); 
     var column = temp[4]; 
     var value = temp[12]; 
     row.put('WORKODR_' + column, value); 
     print('WORKODR_' + column + ' is ' + value); 
    } 
    } 
    return row; 
} 

我CLOB數據將會像2分之212323/月/ 3/4/5/6/7/1/2/3/4/5SD/123 /56分之45|| .... ........

現在我得到「未定義」的輸出。

WORKODR_undefined未定義。

請讓我知道我錯過了什麼。

我試圖打印由「資源」價值,其打印爲

RES2 
RES1 
RES2 
. 
. 
. 

及其對每一個字符分割。這是爲什麼發生?

+1

您確定'attrStr'是一個值爲'212323/2/1/3/4/5/6/7/1/2/3/4/5sd/123/45/56 || 212323的字符串/ 2 /月/ 3/4/5/6/7/1/2/3/4/5SD/123 /56分之45....'。我在小提琴中嘗試了它,它工作。 http://jsfiddle.net/z78p7d5L/9/ – ArinCool 2014-12-02 14:03:42

+0

如何可以null和undefined在同一時間? – epascarello 2014-12-02 14:04:09

+0

你用'console.log(res [i])看到了什麼;' – epascarello 2014-12-02 14:05:36

回答

0

此:

if(attrStr==null && attrStr==undefined){ 

應該是:

if(attrStr!=null && attrStr!=undefined){ 

我假設你想確保它不爲空,而不是不確定的,如果你有情況可能永遠不會滿足它可以」 T爲null和undefined ...

+0

實際上,如果返回輸入的結果是null,那麼print語句正在打印結果。 – Jeyaprakash 2014-12-02 14:01:54

+1

然後你應該這樣做:'if(attrStr == null || attrStr == undefined){' – brso05 2014-12-02 14:02:40

+0

不需要檢查兩個:'foo == null'將同時捕獲null和undefined。 'if(foo === null)'對於'undefined'將是錯誤的。 (!sttrStr) – fiskeben 2014-12-02 14:10:37

0

嘗試使用:

if(attrStr!=null && typeof(attrStr)!='undefined'){ 
0

而不是

if (attrStr == null && attrStr == undefined) { 

使用

if (!attrStr) { 

條件有效期爲null,未定義和零個長度字符串的嘗試。

0

我找到了問題,問題出在||。由於我從一個Java應用程序調用了這個JS,我認爲管道的轉義是必須的。

我用過 var res = attrStr.split('\ | \ |');瞧,它的工作!