首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果或声明不起作用

如果或声明不起作用
EN

Stack Overflow用户
提问于 2022-09-25 06:32:50
回答 1查看 35关注 0票数 0

大家好,我遇到了一个我无法解释的错误。场景如下,我有两个收集信息的输入框。如果没有输入值,我希望If语句处理它并导致中断。输入框还具有一个"x“来关闭该框,该框返回"Cancel”值。我要做的是捕获一个条件,如果没有输入值或通过取消,就会发生中断。现在,问题是谷歌完全忽略了或声明。我每个人都知道,我的IF逻辑可以工作,但是如果加上OR,它就不能识别这种情况。

这是我目前的代码:

代码语言:javascript
运行
AI代码解释
复制
          var propnumber = Browser.inputBox('Enter RFI/RFQ Number', Browser.Buttons.OK);
          
          if(propnumber != "" || propnumber != 'cancel'){} else{
            SpreadsheetApp.getActiveSpreadsheet().toast('You must enter a value')
            return
          };
          var myName = Browser.inputBox("Enter the Component Name",Browser.Buttons.OK_CANCEL);

          if(myName != 'cancel')
          {
                  I do something
          }

正如我在描述中提到的,我的propnumber条件忽略了or,并且总是接受cancel或空白的值。如果我移除或(X),那么它一次只适用于一个条件。

我相信,这是一件微不足道的事情,任何帮助都值得赞赏。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-25 08:48:40

怎么了

代码的以下部分中的逻辑

代码语言:javascript
运行
AI代码解释
复制
if(propnumber != "" || propnumber != 'cancel'){
    // I assume some code will go here
} else{
    SpreadsheetApp.getActiveSpreadsheet().toast('You must enter a value')
    return
};

不符合您在这里描述的逻辑:

如果未输入值或通过“取消”,则会发生中断。

考虑一下propnumber'cancel'的情况

propnumber != ""计算为true

propnumber != 'cancel'计算为false

因此,代码中的if(... || ...)条件计算为true,运行(当前为空的) if块,而不是运行else

如何修复它

选项1:逻辑的直译

如果没有输入值或通过取消,则会发生中断。

将会是

代码语言:javascript
运行
AI代码解释
复制
if(propnumber == "" || propnumber == 'cancel') {
    SpreadsheetApp.getActiveSpreadsheet().toast('You must enter a value')
    return
} else {
    // Some action
} 

选项2:如果您希望交换ifelse子句,则必须否定整个条件。因此,这也是可行的:

代码语言:javascript
运行
AI代码解释
复制
if(!(propnumber == "" || propnumber == 'cancel')) {
    // Some action
} else {
    SpreadsheetApp.getActiveSpreadsheet().toast('You must enter a value')
    return
} 

注意添加的括号和单个否定。

选项3:在现有代码中使用和代替OR。

表达式!(A || B)在逻辑上并不等同于!A || !B。相反,它等同于!A && !B (参见德摩根定律)。因此,这也是可行的:

代码语言:javascript
运行
AI代码解释
复制
if(propnumber != "" && propnumber != 'cancel') {
    // Some action
} else {
    SpreadsheetApp.getActiveSpreadsheet().toast('You must enter a value')
    return
} 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73845312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档