懒惰和贪婪的想法很容易理解,但我只*+在我的正则表达式中使用过一次(在Java中)[A]|[^B]*+(?!C)(A,B,C是任意值),因为它在惰性修饰符导致StackOverflow错误时起作用.
由于大多数搜索引擎无法搜索符号,我找不到任何关于此的文档.那么*+究竟做了什么以及如何做到这一点?
我目前正在读完JavaScript.我在http://www.w3schools.com/js/js_function_closures.asp上关于JavaScript中的闭包(允许"私有变量")的章节.
这个例子是一个计数器:
<!DOCTYPE html>
<html>
<body>
<p>Counting with a local variable.</p>
<button type="button" onclick="myFunction()">Count!</button>
<p id="demo">0</p>
<script>
var add = (function () {
var counter = 0;
return function () {return counter += 1}
})()
function myFunction(){
document.getElementById("demo").innerHTML = add();
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
它声明它使用自调用函数将计数器设置为0 一次,并在每次迭代add()时递增计数器.但是,我在代码中看到,用于自调用函数的花括号围绕着counter = 0和增加计数器的函数.我很难想象两个命令在自调用函数中的确切程度,但只运行一次,而另一个运行每次迭代.