小编Tim*_*ton的帖子

!function(){}()vs(function(){})()

在查看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 twitter-bootstrap iife

29
推荐指数
2
解决办法
1914
查看次数

JavaScript有异国情调的对象吗?

我想写一系列与JavaScript相关的文章/教程.当我发现这个有趣的段落时,我正在查看ECMA规范.

正如ECMA-262(第6版)所述:

4.3.7异国情调的对象

对象不具有所有对象必须支持的一个或多个基本内部方法的默认行为

注意任何不是普通对象的对象都是异域对象.

现在我很好奇.在现代浏览器的JavaScript中是否可以找到这些奇特的物体?

如果是这样的话:能不能给我一个例子并说明它的行为与"普通物体"有多远?

javascript ecmascript-6

14
推荐指数
2
解决办法
2101
查看次数

在JavaScript中使用Generator创建数组

我想从 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或类似的东西?

提前致谢.

javascript arrays generator

7
推荐指数
2
解决办法
5762
查看次数