为什么第二个else if语句不执行,而是执行第一个if语句?

时间:2020-11-08 15:53:33

标签: javascript

当满足要求以执行第二个else if语句时,我遇到了问题。它执行第一个“ if”语句吗?我不知道为什么它不起作用。它执行CGImage而不是Error: =============== C:\Users\Duy>python Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 22:45:29) [MSC v.1916 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. C:\Users\Duy>pip38 --version pip 20.2.4 from d:\3. install soft\python3.8\lib\site-packages\pip (python 3.8) C:\Users\Duy>pip38 install match Collecting match Using cached match-0.3.0.tar.gz (5.0 kB) ERROR: Command errored out with exit status 1: command: 'd:\3. install soft\python3.8\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\Duy\\AppData\\Local\\Temp\\pip-install-9jld04o_\\match\\setup.py'"'"'; __file__='"'"'C:\\Users\\Duy\\AppData\\Local\\Temp\\pip-install-9jld04o_\\match\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\Duy\AppData\Local\Temp\pip-pip-egg-info-ghzl_rtt' cwd: C:\Users\Duy\AppData\Local\Temp\pip-install-9jld04o_\match\ Complete output (9 lines): Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\Users\Duy\AppData\Local\Temp\pip-install-9jld04o_\match\setup.py", line 19, in <module> long_description=readme(), File "C:\Users\Duy\AppData\Local\Temp\pip-install-9jld04o_\match\setup.py", line 8, in readme return f.read() File "d:\3. install soft\python3.8\lib\encodings\cp1252.py", line 23, in decode return codecs.charmap_decode(input,self.errors,decoding_table)[0] UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 266: character maps to <undefined> ---------------------------------------- ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

提前谢谢!

checkleeftijd1();

2 个答案:

答案 0 :(得分:0)

第一个“ IF”及其“ ELSE IF”具有相同的条件,因为代码逐行编译,因此javascript在IF语句中获得了满足的条件,这就是为什么它甚至不会检查else if条件的原因。

答案 1 :(得分:0)

并在之前或之前- 因此,您在第一个if中实际上是(请注意(symptoominv1 == "hoofdpijn" && symptoominv2 == "koorts")周围的括号:

(symptoominv1 == "koorts" || symptoominv1 == "keelpijn" || symptoominv1 == "vermoeidheid" || symptoominv1 == "diarree" || (symptoominv1 == "hoofdpijn" && symptoominv2 == "koorts") || symptoominv2 == "keelpijn" || symptoominv2 == "vermoeidheid" || symptoominv2 == "diarree" || symptoominv2 == "hoofdpijn")

因此,只有这样的“或”项才是正确的,代码才能输入if,而不继续其余的语句。 使用方括号以确保顺序符合您的预期:

if ((symptoominv1 == "koorts" || symptoominv1 == "keelpijn" || symptoominv1 == "vermoeidheid" || symptoominv1 == "diarree" || symptoominv1 == "hoofdpijn") && (symptoominv2 == "koorts" || symptoominv2 == "keelpijn" || symptoominv2 == "vermoeidheid" || symptoominv2 == "diarree" || symptoominv2 == "hoofdpijn"))

如果出现以下情况,则第一个和第二个相同:

else if ((symptoominv1 != "koorts" || symptoominv1 != "keelpijn" || symptoominv1 != "vermoeidheid" || symptoominv1 != "diarree" || symptoominv1 != "hoofdpijn") && (symptoominv2 == "koorts"|| symptoominv2 == "keelpijn" || symptoominv2 == "vermoeidheid" || symptoominv2 == "diarree" || symptoominv2 == "hoofdpijn"))

else if((symptoominv1 == "koorts" || symptoominv1 == "keelpijn" || symptoominv1 == "vermoeidheid" || symptoominv1 == "diarree" || symptoominv1 == "hoofdpijn") && (symptoominv2 != "koorts" || symptoominv2 != "keelpijn" || symptoominv2 != "vermoeidheid" || symptoominv2 != "diarree" || symptoominv2 != "hoofdpijn"))