3

我最近发现了这个代码片段:

function start() {

    function sleep(milliSeconds) {
        var startTime = new Date().getTime();
        while (new Date().getTime() < startTime + milliSeconds);
    }

    sleep(10000);
    return "Hello Start";
}

我们以这种方式定义函数而不是使用“传统”方法有什么优势?

提前致谢。

4

2 回答 2

4

这样做的好处是您的函数sleep不再在全局范围内定义。它的范围是 function start

这是有利的,因为将所有函数放在全局范围内,可能会导致与其他脚本发生冲突。

将所有函数定义为全局函数并没有什么traditional意义,这只是一种一直存在的不好的做法。减少global占用空间是一种良好且负责任的做法,它将减少您的脚本与可能包含在您的应用程序中的其他脚本之间的冲突。

于 2013-02-13T16:28:10.323 回答
1

它与范围有关。考虑获取最近发布的 JavaScript Ninja 的秘密副本,以全面了解 JavaScript。但是我们可以使用您的浏览器控制台来试试这个(可能在 Internet Explorer 中不起作用,请使用 Chrome):

> function start() { function bob() { console.log('bob'); } bob() };
> start()
> bob
> bob()
> ReferenceError: bob is not defined

所以你可以看到bob里面的函数start不在start函数之外的范围内。这样做的原因有很多。

于 2013-02-13T16:32:08.123 回答