【发布时间】:2016-06-02 07:24:58
【问题描述】:
假设我有一个名为generatedPattern 的全局变量。我想在function animate() 中使用它,但不想更改它的值。所以我将 generatedPattern 复制到函数中的本地 var(比如 var patternToAnimate),然后使用 patternToAnimate。
patternToAnimate 的任何更改是否会更改 generatedPattern?如果是这样,我该如何避免这种情况?
即,如何在不全局更改的情况下在本地函数中使用 generatedPattern?
代码
function animateGeneratedPattern() {
var patternToAnimate = generatedPattern;
function animateNextPattern(lightup) {
if (!patternToAnimate|| patternToAnimate.length === 0) {
return;
}
switch(patternToAnimate[0]) {
case 1:
animateRed();
break;
case 2:
animateGreen();
break;
case 3:
animateBlue();
break;
case 4:
animateYellow();
break;
}
if (lightup) {
// Long delay before turning light off
setTimeout(function() {
animateNextPattern(false);
}, 500);
}
else {
patternToAnimate.splice(0, 1);
// Small delay before turning on next light
setTimeout(function() {
animateNextPattern(true);
}, 10);
}
}
animateNextPattern(true);
}
patternToAnimate 被拼接时,generatedPattern 也是如此。
【问题讨论】:
-
这取决于
generatedPattern是否是原始值。 -
全局定义为 var generatedPattern=[];
标签: javascript function global-variables local-variables