在Javascript IF语句中使用空格/连字符

时间:2014-06-25 16:43:53

标签: javascript if-statement

我试图找到一种在javascript语句中使用空格和连字符的方法。

<script type='text/javascript'>
<!--
var {word} = '{word}';

if(
    {word} == 'hellothere' ||
    {word} == 'hello there' ||
    {word} == 'hello-there'
){ 
    document.write('blah blah'); 
}
else {  
    document.write('');
}
</script>

以上代码的设计使得每当单词hello there时,都会显示某个内容。 但是,当单词hello there之间有空格时,它不起作用。 我尝试使用连字符:hello-there,但这也不起作用。

只有当我用一个单词写作时才会有效:hellothereHelloThere以便更好地阅读。

这是为什么?它有办法吗?

2 个答案:

答案 0 :(得分:2)

假设(因为您没有表现出来){word}已扩展为hello there,您的代码将变为:

var hello there = 'hello there';

if(
  hello there == 'hellothere' ||
  hello there == 'hello there' ||
  hello there == 'hello-there'
){ 
  document.write('blah blah'); 
}
else {  
  document.write('');
}

正如一些评论者指出的那样,变量的名称中不能有空格。

为什么需要在变量内容后命名变量?这个版本可以正常工作:

var myword = '{word}';

if(
    myword == 'hellothere' ||
    myword == 'hello there' ||
    myword == 'hello-there'
){ 

然后,您可以重写if以考虑空格和破折号:

if (myword.match(/^hello[ \-]*there$/i)) {

答案 1 :(得分:0)

我认为你正在寻找

if ({word}.replace(/-| /g, "") == 'hellothere') { … }

(尽管有明显的语法问题)。在比较它之前,它只删除{word}中的所有连字符和空格。如果您想使其不区分大小写,请添加.toLowerCase()