use*_*999 5 javascript switch-statement
我发现下面这两个是等价的,但是退出奇怪的是,单个=不是关系运算符而是赋值运算符,为什么它在第二个运算符?
第一:
switch (true)
{
case color == 'green':case color == 'red':case color == 'blue':case color == 'pink':
alert('colorful')
break;
case color == 'black':case color == 'white':
alert('classical')
break;
default:
alert('dull')
break;
}
Run Code Online (Sandbox Code Playgroud)
第二:
switch (color)
{
case color = 'green':case color = 'red':case color = 'blue':case color = 'pink':
alert('colorful')
break;
case color = 'black':case color = 'white':
alert('classical')
break;
default:
alert('dull')
break;
}
Run Code Online (Sandbox Code Playgroud)
在第一个switch语句中检查boolean值.所以有效的结果将是true或false.
对于第二个switch语句,我们正在搜索颜色.赋值的结果是它自己的赋值.
color = 'green'将返回green并将完全像写作,case 'green':除了它也将改变的值color.
但是,这是一个很大但是,你正在改变价值,color同时检查什么color和那可能会导致大的副作用.
您最好使用正确的正式样式case 'green':而不是其他变体.特别是没有assignment变化.