Heyo,有人可以向我解释为什么如果变量'white'在函数内部,这段代码将不起作用吗?
it("should load app route", () => {
// Arrange
let guard = new VertragGuard(<any>router, contractService);
// Act & Assert
(<Observable<Boolean>>guard.canLoad(null)).subscribe(value => {
expect(value).toBeTruthy();
});
});
答案 0 :(得分:2)
在这种情况下:
var button = document.querySelector("button");
var body = document.querySelector("body");
var white = true;
button.addEventListener("click", function() {
if (white) {
body.style.backgroundColor="pink";
} else {
body.style.backgroundColor="white";
}
white = !white;
});
&#13;
<button>Click</button>
&#13;
您更改了全局变量white
,并且在执行函数后它将是true
或false
,因此该函数会将颜色触发到另一个(如果它是白色的,请点击它之后)将是粉红色,反之亦然。)
但在这种情况下:
var button = document.querySelector("button");
var body = document.querySelector("body");
button.addEventListener("click", function() {
var white = true;
if (white) {
body.style.backgroundColor="pink";
} else {
body.style.backgroundColor="white";
}
white = !white;
});
&#13;
<button>Click</button>
&#13;
函数执行完成后,将删除所有本地函数变量。您的white
变量在函数开始时总是true
,因此第一个if
语句每次都有效(将背景更改为仅粉红色)。