php5.5新添加一个新特性 yeild 官方文档,想用闭包模拟一下yeild,而后发现JS和PHP闭包的差异php
<?php function php_shell(){ $arr = [9,8,7,6,5,4,3,2,1]; $func = function () use($arr){ //use(&$arr) 结果会不同 return array_pop($arr); }; return $func; } $func = php_shell(); for($i = 0 ; $i <= 6; $i++){ echo $func(); echo "<br/>\r\n"; } ?> <script> function js_shell(){ var arr = [9,8,7,6,5,4,3,2,1]; var func = function(){ return arr.pop(); }; return func; } var func = js_shell(); for(var i = 0 ; i <= 6; i++){ console.log(func()); } </script>
结果截图(左边是PHP结果,右边是JS结果)两边shell
很明显:JS和PHP在闭包的变量的处理有差别
再PHP匿名函数 use 变量加上引用符号,而后结果就是同样的了闭包