在查看Twitter Bootstrap Javascript中编写的一些代码时,看起来他们正在调用立即调用的匿名函数,如下所示:
!function( $ ) {
...
}(window.jQuery || window.ender);
Run Code Online (Sandbox Code Playgroud)
我传统上看到过这样的事情:
(function($) {
...
})(window.jQuery || window.ender);
Run Code Online (Sandbox Code Playgroud)
第一种方式似乎有点hacky,我不确定这样做是否有任何好处或理由,而不是第二种方式? 请注意,我理解它是如何工作的,我希望了解为什么他们选择这种方式来做到这一点.
我想写一系列与JavaScript相关的文章/教程.当我发现这个有趣的段落时,我正在查看ECMA规范.
正如ECMA-262(第6版)所述:
4.3.7异国情调的对象
对象不具有所有对象必须支持的一个或多个基本内部方法的默认行为
注意任何不是普通对象的对象都是异域对象.
现在我很好奇.在现代浏览器的JavaScript中是否可以找到这些奇特的物体?
如果是这样的话:能不能给我一个例子并说明它的行为与"普通物体"有多远?
我想从 JavaScript 中的生成器的值创建一个数组.生成器创建一个像这样的动态长度序列
function* sequenceGenerator(minVal, maxVal) {
let currVal = minVal;
while(currVal < maxVal)
yield currVal++;
}
Run Code Online (Sandbox Code Playgroud)
我想将这些值存储在一个数组中,但使用next()
直到生成器完成似乎不是最好的方法(并且说实话上看起来很丑).
var it, curr, arr;
it = sequenceGenerator(100, 1000);
curr = it.next();
arr = [];
while(! curr.done){
arr.push(curr.value);
}
Run Code Online (Sandbox Code Playgroud)
我可以以某种方式直接从发生器/内部创建一个数组吗?如果没有,我可以以某种方式避免/隐藏循环吗?也许通过使用map
或类似的东西?
提前致谢.