在另一个js函数中定义一个js函数

时间:2013-02-13 16:25:08

标签: javascript

我最近发现了这段代码:

function start() {

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

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

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

提前致谢。

2 个答案:

答案 0 :(得分:4)

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

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

没有任何关于将所有函数定义为全局变量的traditional,这只是一种持久的错误做法。减少global足迹是一种良好且负责任的做法,可以减少脚本与应用程序中可能包含的其他脚本之间的冲突。

答案 1 :(得分:1)

它与范围有关。考虑获取最近发布的Secrets of the 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函数之外的范围内。这样做有很多原因。