我最近发现了这段代码:
function start() {
function sleep(milliSeconds) {
var startTime = new Date().getTime();
while (new Date().getTime() < startTime + milliSeconds);
}
sleep(10000);
return "Hello Start";
}
我们用这种方式定义函数有什么优势,而不是使用“传统”方法?
提前致谢。
答案 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
函数之外的范围内。这样做有很多原因。