我有以下代码,它是聊天机器人的事件侦听器。
userType值没有被保留或从第一个if语句传递到第二个if语句,该值是未定义的。
如何防止 userType 值被第二个 if 语句清除?
q('handleEvents', function(name, data) {
var userType;
if (name === 'QCP') {
userType = "CP";
console.log(userType);
}
if (name === 'EC') {
console.log('EC found');
console.log(userType);
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event': 'qlc',
'qUserType': userType
});
}
});
您可以将
userType
放在函数之外。您还可以将其密封在一个块中,以便仅对事件处理程序可见(如静态函数变量),避免在现代 JS 中使用 var
,了解 let
和 const
。这样,变量将在事件侦听器的调用之间保留。
还可以使用
else if
来避免第二次检查第一个是否为真:
{
let userType;
q('handleEvents', function(name, data) {
if (name === 'QCP') {
userType = "CP";
console.log(userType);
} else if (name === 'EC') {
console.log('EC found');
console.log(userType);
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event': 'qlc',
'qUserType' : userType
});
}
});
}