Javascript 多个“如果”语句

Javascript 多个“如果”语句,javascript,jquery,Javascript,Jquery,有没有办法将多个javascript if语句放在一个语句中?例如: if (location.host === "www.google.com", "www.jsfiddle.net") { blah }; 或者我只需要使用| |,例如: if (location.host === "www.google.com" || location.host === "www.jsfiddle.net"){ blah }; 如果有一种方法可以做到这一点,或者是一种更简单的方法,请您在下面记下 这是不

有没有办法将多个javascript if语句放在一个语句中?例如:

if (location.host === "www.google.com", "www.jsfiddle.net") { blah };
或者我只需要使用| |,例如:

if (location.host === "www.google.com" || location.host === "www.jsfiddle.net"){ blah };
如果有一种方法可以做到这一点,或者是一种更简单的方法,请您在下面记下

这是不同的,因为另一个问题只收到了JS的答案,而这个问题收到了jQuery的答复,并且是为了达到不同的目标。

成语是:

if(["www.google.com", "www.jsfiddle.net"].indexOf(location.host) > -1) { ... }
但这只适用于IE9及以上版本,以及现代浏览器。

习惯用法是:

if(["www.google.com", "www.jsfiddle.net"].indexOf(location.host) > -1) { ... }
但这只适用于IE9及以上版本,以及现代浏览器。

您可以通过以下方式使用javascript方法:

var array = ["www.google.com", "www.jsfiddle.net"]
if(array.indexOf(location.host) != -1)
{ //ok
}
您可以通过以下方式使用javascript方法:

var array = ["www.google.com", "www.jsfiddle.net"]
if(array.indexOf(location.host) != -1)
{ //ok
}

但是,您可以编写一个函数,而不是使用现有的语法

函数AssertAnyEqualValue{ 严格使用; var args=新的Arrayarguments.length; 对于变量i=1;iconsole.logassertAnyEqualsv,c 但是,您可以编写一个函数,而不是使用现有的语法

函数AssertAnyEqualValue{ 严格使用; var args=新的Arrayarguments.length; 对于变量i=1;iconsole.logassertAnyEqualsv,c 另一种选择是使用案例。我个人的做法是,如果我必须执行多个elseif语句,则使用开关盒。在我看来,它更容易阅读,如果你开始处理非常大的查找,它的性能会更好

switch(location.host) {
  case 'www.google.com':
    // blah
    break;
  case 'www.jsfiddle.net':
   //blah
   break;
  case 'www.stackoverflow.com':
   // blah
   break;
  default:
   // blah
}

另一种选择是使用案例。我个人的做法是,如果我必须执行多个elseif语句,则使用开关盒。在我看来,它更容易阅读,如果你开始处理非常大的查找,它的性能会更好

switch(location.host) {
  case 'www.google.com':
    // blah
    break;
  case 'www.jsfiddle.net':
   //blah
   break;
  case 'www.stackoverflow.com':
   // blah
   break;
  default:
   // blah
}
indexOf在可读性方面没有多大意义。我更喜欢使用contains函数来封装存在性检查。和库都有一个,但您也可以轻松推出自己的:

function contains(array, element) {
    return array.indexOf(element) > -1;
}

if (contains(["www.google.com", "www.jsfiddle.net"], location.host)) { blah };
indexOf在可读性方面没有多大意义。我更喜欢使用contains函数来封装存在性检查。和库都有一个,但您也可以轻松推出自己的:

function contains(array, element) {
    return array.indexOf(element) > -1;
}

if (contains(["www.google.com", "www.jsfiddle.net"], location.host)) { blah };

我喜欢使用对象查找表,因为它可以保存引号,但执行速度总是比通过indexOf搜索快得多:

var oks= {"www.google.com":1, "www.jsfiddle.net":1}
if(oks[location.host]===1){ 
   alert("ok!")
}
它的速度要快得多,因为没有方法调用,而且属性查找非常快。它甚至比打开大型集合更快,而且肯定更灵活、更可重用

只要我需要一个值来自另一个值,没有嵌套条件或其他复杂情况,我就会选择LUT

此模式还允许您轻松添加新值oks[key]=1,使用extend合并集合而不使用重复项,并从语义上删除不需要的选项delete oks['www.google.com',而不是一堆拼接索引,1 malarky。与[]不同,它在旧浏览器中也非常有效

您也可以使用hasOwnProperty.calloks键,但它否定了一些性能优势

此外,这实际上只适用于函数、字符串、数字和某些数组,它不允许像映射那样按对象查找

我应该提到,还有另一种IE8友好的索引方式:
如果,www.google.com,www.jsfiddle.net,.indexOf[,key,]==1{…}

我喜欢使用对象查找表,因为它可以保存引号,但执行速度总是比通过indexOf进行搜索快得多:

var oks= {"www.google.com":1, "www.jsfiddle.net":1}
if(oks[location.host]===1){ 
   alert("ok!")
}
它的速度要快得多,因为没有方法调用,而且属性查找非常快。它甚至比打开大型集合更快,而且肯定更灵活、更可重用

只要我需要一个值来自另一个值,没有嵌套条件或其他复杂情况,我就会选择LUT

此模式还允许您轻松添加新值oks[key]=1,使用extend合并集合而不使用重复项,并从语义上删除不需要的选项delete oks['www.google.com',而不是一堆拼接索引,1 malarky。与[]不同,它在旧浏览器中也非常有效

您也可以使用hasOwnProperty.calloks键,但它否定了一些性能优势

此外,这实际上只适用于函数、字符串、数字和某些数组,它不允许像映射那样按对象查找

我应该提到,还有另一种IE8友好的索引方式:
如果,www.google.com,www.jsfiddle.net,.indexOf[,key,]==1{…}

或者我只需要使用{124; Yes,或者创建一个数组,看看元素是否存在于其中。如果location.host在{'www.google.com':1,'www.jsfiddle.net':1}{/*blah*/}@JarrodRoberson这不是这个问题的重复。我想说这是这些问题的子集。
看看这个问题和那个问题的答案,主要是为了实现一个不同的目标[www.google.com,www.jsfiddle.net].someObject.is.bind0,www.google.com或者我只需要使用| | Yes,或者创建一个数组,看看元素是否存在于其中@JarrodRoberson这不是那个问题的重复。我想说这是这些问题的子集。看看这个问题和那个问题的答案,主要是为了实现不同的目标。[www.google.com,www.jsfiddle.net].someObject.is.bind0,www.google.com绝对同意可读性。绝对同意可读性。如果要检查的值是字符串hasOwnProperty、valueOf等,您可能应该使用oks.hasOwnPropertylocation.host,这仅适用于字符串和数字。如果要检查的值是字符串hasOwnProperty、valueOf等,则可能应使用oks.hasOwnPropertylocation.host。此外,这仅适用于字符串和数字。避免使用Array.prototype.slice.call;最好在这里使用for循环。避免Array.prototype.slice.call;最好在这里使用for循环。