javascript - 变量不能位于函数内部

标签 javascript html

嘿,有人可以向我解释一下为什么如果变量“white”位于函数内部,这段代码将不起作用吗?

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;
});

最佳答案

在这种情况下:

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;
});
<button>Click</button>

您更改全局变量white,函数执行后它将变为truefalse,因此该函数将触发颜色为另一种颜色(如果它是白色的,点击后它会变成粉红色,反之亦然)。

但在这种情况下:

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;
});
<button>Click</button>

函数执行完成后,所有局部函数变量都会被删除。您的 white 变量在函数启动时始终为 true,因此第一个 if 语句每次都有效(仅将背景更改为粉红色)。

关于javascript - 变量不能位于函数内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45510187/

相关文章:

jquery - TypeIt JQuery 插件 : Remove cursor when typing has completed

javascript - 将宽度设置为 100% 以使其在 js 中响应

javascript - 如何使 Canvas 上的对象在移动设备上顺畅地左右移动到 x 轴

javascript - 为什么我的 JavaScript 代码收到“"No ' Access-Control-Allow-Origin' header is present on the requested resources”错误,而 Postman 却没有?

javascript - Chrome 控制台不返回值

javascript - 加载 Jquery 幻灯片时获取属性

html - CSS 一半/一半背景

jquery - 使用 jquery 按顺序淡入链接?

javascript - 如何保持固定的高度

javascript - 当键盘进入屏幕时,选定的 ionic 输入边框上下移动