2011-09-08 60 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]; 
} 
相关问题