2011-09-08 62 views
0

我使用事件跟蹤如下:如何在var無效的情況下修改變量而不會出錯?

var dataTrack = e.split(','); // split by comma 

if (dataTrack !== undefined) { 

    var action = dataTrack[0]; 
    var values = {}; 
    values[dataTrack[1]] = dataTrack[2]; 

    mpq.track(action, values); 
} 

我如何可以修剪dataTrack [0],dataTrack [1],dataTrack [2]的方式,其中,如果任何dataTrack瓦爾是空的它不會中斷? 1 & 2是可選的...

感謝

+1

'split'總是返回一個數組,所以檢查,對'undefined'沒什麼用。相反,您應該在'undefined'上檢查'e'。 – pimvdb

回答

0

你可能想使用length property的陣列。

var dataTrack = e.split(','); // split by comma 

if (dataTrack !== undefined) { 

    var action = dataTrack[0]; 
    var values = {}; 
    if(dataTrack.length > 2) { 
     values[dataTrack[1]] = dataTrack[2]; 
    } 

    mpq.track(action, values); 
} 

你可以添加額外的驗證檢查dataTrack [1]的長度> 0,如果有可能,有人會通過「值1,值3」。

2

在JavaScript中常見的成語是提供像這樣的默認值:

// default to the empty string 
var dataTrack0 = dataTrack[0] || '', 
    dataTrack1 = dataTrack[1] || '', 
    dataTrack2 = dataTrack[2] || ''; 

...但我認爲更好的解決方案,在這種情況下,可能是檢查數組的length

0

難道你只是檢查,以確保他們不是空的?如果三態運算符爲空(即action == undefined?「Default」:datatrack [0];),也可以使用三態運算符來設置默認值。

+0

在Javascript中有一種更習慣的方式來做到這一點。看到我的答案。 –

+0

@Matt Ball剛剛看到它。我同意,你的更好。 –

0

更換

values[dataTrack[1]] = dataTrack[2]; 

if(dataTrack.length > 2){ 
values[dataTrack[1]] = dataTrack[2]; 
} 
相關問題