在addEventListener JavaScript中定义的变量

我在下面的代码在我的JS scirpt的开始。 当我尝试在该代码下面打印任何定义的变量时,控制台说变量没有被定义。 你能告诉我为什么吗? 也许我应该先打电话给功能? 当我在下面定义变量并将其打印到控制台时,它可以正常工作。

代码如下:

 document.addEventListener("DOMContentLoaded", function(){
     var homeElement = document.getElementById("home");
     var childElements = document.querySelector(".oferts").children;
     var banner = document.querySelector(".ban");
     var blocks = document.querySelectorAll(".block");
     var links = document.querySelector(".links").children;

 });

 console.log(homeElement); //Here I got info that this variable is not defined

在此先感谢您的帮助!


你的变量是在本地定义的,不能在函数之外访问。

您可以删除var关键字以使变量成为全局变量,并且您可以在脚本的任何位置调用该变量。

阅读JavaScript范围

Javascript本地和全局变量混淆

揭秘JavaScript变量范围和提升

JavaScript范围


尝试在函数内部记录你的变量

document.addEventListener("DOMContentLoaded", function(){
     var homeElement = document.getElementById("home");
     var childElements = document.querySelector(".oferts").children;
     var banner = document.querySelector(".ban");
     var blocks = document.querySelectorAll(".block");
     var links = document.querySelector(".links").children;

     console.log(homeElement);// <--
 });

您的问题发生在homeElement未在外部作用域中定义。


这是因为变量是在事件侦听器函数的范围内创建的,而console.log是在全局范围内执行的。 全局作用域不能访问变量作用域。

您可以将console.log移动到函数中,也可以在函数之外声明变量。

链接地址: http://www.djcxy.com/p/51669.html

上一篇: Variables defined in addEventListener JavaScript

下一篇: Why is a DOM element null?