小编Nat*_*all的帖子

是否有用于将CommonJS模块编译为单个.js文件的工具?

是否有可写的编译与CommonJS的/节点类模块(模块的任何工具require,exports等等)到一个单一的.js文件送达给浏览器?

javascript

6
推荐指数
1
解决办法
1241
查看次数

现代浏览器是否始终使用内联函数?如何预测内联的性能?

我的问题涉及通过函数内联的现代浏览器优化.我想我真的需要熟悉V8,JavaScriptCore和/或SpiderMonkey代码库的人来回答这个问题.或至少知道现代浏览器优化方法的人.

基本上我想知道是否有任何方法可以预测何时使用函数内联以及如何利用它来优化性能,同时最小化代码重复.

我们以joi tempo 的以下简单函数为例:

function limit(f, max) {
    var count = 0, isFunction = typeof max == 'function';
    if(!isFunction) max = max >>> 0 || 1;
    return function limitedFunction() {
        if(isFunction ? !max(count) : (count >= max)) return;
        count++;
        return f.apply(this, arguments);
    };
}
Run Code Online (Sandbox Code Playgroud)

此函数接受一个函数f并返回一个包装函数,该函数限制了通过包装器调用原始函数的次数.例:

var foo = limit(function() { console.log('foo'); }, 3);
foo(); // logs 'foo'
foo(); // logs 'foo'
foo(); // logs 'foo'
foo(); // doesn't log anything
foo(); // doesn't log anything
Run Code Online (Sandbox Code Playgroud)

它还接受一个返回 …

javascript performance inline

5
推荐指数
0
解决办法
130
查看次数

只有在ES5严格不存在的情况下才能定义全局变量?

我正在ES5中编写ES Harmony Symbol/ 的实现Name.我将使用该名称Symbol,但我希望浏览器Symbol在它已经存在的情况下(在未来的浏览器中)使用任何预先存在的名称.我希望我的代码符合ES5严格要求并可移植到其他项目中.

这是(非常多的)在ES3/ES5非严格中做我想做的事情的一种方式:

(function() {

    // If Symbol already exists, we're done.
    if(typeof Symbol != 'undefined') return;

    // This becomes global because it wasn't declared with var
    Symbol = function() {
        // ...
    };

})();
Run Code Online (Sandbox Code Playgroud)

但是,它不是ES5严格兼容的,因为Symbol没有明确定义.

实现此window目的的其他方法包括访问object(window.Symbol = ...),但这也不好,因为我不希望我的代码假设它在浏览器环境中运行.

如何在ES5中严格执行此操作?

javascript ecmascript-5

5
推荐指数
1
解决办法
1465
查看次数

在ECMAScript 6中全局范围内的`this`

我已经尝试过自己查看ES6草案,但我不确定在哪里看:

有人能告诉我,this在ES6中是否必然引用全局对象?此外,此对象是否与全局范围具有相同的成员?

如果您能回答ES5也会有所帮助.

我知道this在全局范围内是指浏览器和大多数其他ES环境中的全局对象,如Node.我只是想知道这是规范定义的行为,还是实现者已添加的扩展行为(如果这种行为在ES6实现中继续).另外,全局对象总是与全局范围相同吗?或者有区别吗?


更新 - 为什么我想知道:我基本上是想弄清楚如何在ES5和6中可靠地获取全局对象.我不能依赖,window因为这是特定于浏览器的,我也不能依赖,global因为这是特定于环境的喜欢Node.我知道this在Node中可以参考module模块范围,但我认为它仍然指的是global全局范围.我想要一个跨环境ES5和6兼容的方式来获取全局对象(如果可能).似乎this在全球范围内我所知道的所有环境都是这样,但我想知道它是否是实际规范的一部分(在我可能不熟悉的任何环境中都是如此可靠).

我还需要知道全局范围和全局对象是否与规范相同.换句话说,全局范围内的所有变量都是一样的globalobject.variable_name吗?


更新2 - 我正在尝试做的事情:

为ES5环境开发了一些ES6垫片.我想知道(1)检查ES6内置函数是否已经存在以便在可能的情况下使用它们而不是我的垫片,以及(2)将垫片添加到全局范围内的最佳方法(1) ins还不存在.

目前我正在遵循这种模式:

(function() {

    // Indirect eval to run in global scope.
    // (We get whatever "this" is in global scope, hoping that it's the global object...
    // Whether this line does what I want it to is the crux of my question.)
    var global …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-5 ecmascript-harmony

5
推荐指数
1
解决办法
1775
查看次数