在这个页面中,我发现了一个新的JavaScript函数types: // NOTE: "function*" is not supported yet in Firefox. // Remove the asterisk in order for this code to work in Firefox 13 function* fibonacci() { // !!! this is the interesting line !!! let [prev, curr] = [0, 1]; for (;;) { [prev, curr] = [curr, prev + curr]; yield curr; } } […]
我现在已经在几个图书馆看到了这个语法,我想知道它的好处是什么。 (注意我很了解闭包和代码在做什么,我只关心语法上的差异) !function(){ // do stuff }(); 作为更常见的替代scheme (function(){ // do stuff })(); 用于自我调用匿名函数。 我想知道一些事情。 首先,什么是允许顶部的例子实际工作? 为了使这个语句在句法上是正确的,为什么是必要的? 我也被告知, +工作,我敢肯定其他人,取代! 其次,有什么好处? 我只能说,它保存了一个字符,但我无法想象吸引众多使用者的巨大好处。 我还有其他一些好处吗? 我能看到的唯一的另一个区别是自调函数的返回值,但在这两个例子中,我们并不关心函数的返回值,因为它只用于创build闭包。 那么有人可以告诉我为什么可以使用第一个语法?
以前在这里回答的问题说这是最快的方法: //nl is a NodeList var arr = Array.prototype.slice.call(nl); 在我的浏览器基准testing中,我发现它比这慢了3倍多: var arr = []; for(var i = 0, n; n = nl[i]; ++i) arr.push(n); 他们都产出相同的产出,但我很难相信我的第二个版本是最快的方式,特别是因为人们在这里说的其他。 这是我的浏览器(铬6)怪癖? 还是有更快的方法? 编辑:任何关心的人,我解决以下(这似乎是我testing的每个浏览器中最快): //nl is a NodeList var l = []; // Will hold the array of Node's for(var i = 0, ll = nl.length; i != ll; l.push(nl[i++])); 编辑2:我发现一个更快的方法 […]
情况有点像 – var someVar = some_other_function(); someObj.addEventListener("click", function(){ some_function(someVar); }, false); 问题是someVar的值在addEventListener的监听器函数内部是不可见的,在那里它可能被当作一个新的variables来处理。
HTML源代码 <div ng-app=""> <div ng-controller="test"> <div ng-address-bar browser="html5"></div> <br><br> $location.url() = {{$location.url()}}<br> $location.search() = {{$location.search('keyword')}}<br> $location.hash() = {{$location.hash()}}<br> keyword valus is={{loc}} and ={{loc1}} </div> </div> AngularJS源代码 <script> function test($scope, $location) { $scope.$location = $location; $scope.ur = $scope.$location.url('www.html.com/x.html?keyword=test#/x/u'); $scope.loc1 = $scope.$location.search().keyword ; if($location.url().indexOf('keyword') > -1){ $scope.loc= $location.url().split('=')[1]; $scope.loc = $scope.loc.split("#")[0] } } </script> 这里variablesloc和loc1都返回testing结果作为上面的URL。 这是正确的方法吗?
我想知道,JavaScript提供了各种方法来获取任何元素的第一个子元素,但哪个最好? 我最好的意思是:大多数跨浏览器兼容,最快,最全面和可预测的行为。 我用作别名的方法/属性列表: var elem = document.getElementById('container'); var child = elem.children[0]; var child = elem.firstElementChild; // == children[0] 这适用于这两种情况: var child = elem.childNodes[0]; // or childNodes[1], see below 这是在forms,或<div>迭代的情况下。 如果我可能遇到文本元素: var child = elem.childNodes; // treat as NodeList var child = elem.firstChild; 据我firstChild , firstChild使用childNodes的NodeList, firstElementChild使用children 。 我在MDN参考基础上的这个假设: childNode是对元素节点的第一个子元素的引用,如果没有,则为null 。 我猜测,就速度而言,如果有的话,差异将firstElementChild没有,因为firstElementChild是firstElementChild children[0]的引用,并且children对象已经在内存中。 什么引起我,是childNodes对象。 我用它来查看一个表格元素。 当children列出所有的表单元素时, […]
如果我有一个通过var t = setTimeout("dosomething()", 5000)设置的活动超时运行, 有没有办法暂停和恢复? 有什么办法让目前的超时时间剩下吗? 或者我必须在一个variables,当超时设置,存储当前时间,然后我们暂停,现在和之间的区别?
我想dynamic包括JavaScript文件到我的js文件。 我做了一些研究,发现jQuery $ .getScript()方法将是一个理想的方式去。 // jQuery $.getScript('/path/to/imported/script.js', function() { // script is now loaded and executed. // put your dependent JS here. // what if the JS code is dependent on multiple JS files? }); 但我想知道这种方法是否可以一次加载多个脚本? 为什么我问这是因为有时我的javascript文件是依赖于多个js文件。 先谢谢你。
我的用户希望能够按Ctrl + S来保存表单。 是否有一个很好的跨浏览器捕获Ctrl + S组合键并提交表单? 应用程序build立在Drupal上,所以jQuery是可用的。
我希望在二进制中看到整数,正数或负数。 而是喜欢这个问题 ,但对于JavaScript。