Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery/javascript中的语法正确吗?_Javascript_Jquery_If Statement - Fatal编程技术网

jquery/javascript中的语法正确吗?

jquery/javascript中的语法正确吗?,javascript,jquery,if-statement,Javascript,Jquery,If Statement,在下面的jquery中,是否应该在中的“点”之前有一个结束语“)”: “.test($…” (/^\s*$/.test($(this.val()) 如果不是,为什么不呢?我觉得代码有点奇怪。代码是正确的: /^\s*$/ // create a regex .test( // call the test method on it $(this) // create a jquery object .val() // call the val method on it

在下面的jquery中,是否应该在中的“点”之前有一个结束语“)”:

.test($
…”

(/^\s*$/.test($(this.val())

如果不是,为什么不呢?我觉得代码有点奇怪。

代码是正确的:

/^\s*$/  // create a regex
  .test( // call the test method on it
    $(this) // create a jquery object
      .val() // call the val method on it
  )
但是,可以缓存该值:
var val=$(this.val();

那么这一行可能就不会那么让你困惑了:
/yourregex/.test(val)

/^\s*$/
是一个正则表达式文本,它有一个被调用的测试方法。括号来自更大的if条件

由于javascript是完全面向对象的,所以即使是文字也可以有方法

/^\s*$/.test( $(this).val() )
第一部分是正则表达式,而不是字符串或其他任何东西。因此,它以delimiter
/
/
开头和结尾

使用
.match
有时更清晰,因为它似乎没有一些奇怪的未绑定项在源代码中浮动:

$(this).val().match(/^\s*$/);
分解后的这个特定表达式如下所示:

/^   // Beginning of String
\s*  // Space, zero or more times
$/   // End of String

因此,如果从头到尾有零个或更多的空格,则测试结果为阳性。

代码很好。如果您认为它不可读,为什么不先创建正则表达式呢

var regex = /^\s*$/;
if(regex.test($(this).val())
    ...

/something/
是一个正则表达式。在Javascript中,它们是带有方法的对象,
test
就是这样一种方法。代码没有任何问题。还有一种方法可以避免类似的混淆,那就是使用一些空格来正确设置代码格式,以使代码不加密。这里实际上不应该是一个paren开头-他从他的
if()中复制
statement@JonathanSampson,+1这也有助于我理解。我在google@Chris22上找到了这个链接,Mozilla开发者网络总是很有帮助的。我还注意到你问过这个表达式是什么意思,所以我更新了我的答案以包含这个解释。我很确定你在使用
new RegExp()时传递了一个字符串
。但是,除非必须这样做,否则不要这样做。使用字符串意味着您必须加倍转义反斜杠等。哦,对了。我已经有一段时间没有在JS中使用正则表达式了。谢谢您的帮助input@Ash,是的,如果它是这样编码的,我会更好地理解它。我不知道reg表达式可以有方法+1。如果我可以选择更多的方法有一个答案,我会的。谢谢你解释正则表达式是文本并且有方法。这真的很有帮助。它匹配一个空字符串或者只包含空格的字符串。
var regex = /^\s*$/;
if(regex.test($(this).val())
    ...