JavaScript 如何将变量传递给第二个 if 语句

问题描述 投票:0回答:1

我有以下代码,它是聊天机器人的事件侦听器。

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
    });
  }
});
javascript
1个回答
0
投票

您可以将

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
         });      
    }
  });
}
© www.soinside.com 2019 - 2024. All rights reserved.