开发者问题收集

控制台不输出定义的变量

2017-06-10
339

代码在网页上运行完美。

var clock = document.getElementById('current-time');
	 
	 var d = new Date();
	 
	clock.innerHTML = d.getHours() + ':' + d.getMinutes();

当我想在控制台中检查值时,它会输出错误:

Uncaught ReferenceError: d is not defined at :1:1

两点说明:

  1. 我使用的是“use strict”模式

  2. 它位于 document.addEventListener("DOMContentLoaded", function(event) {...

这些中的任何一个都会引起问题吗?

2个回答

When I want to check the value in console it outputs an error

听起来您想检查开发者控制台中的值(错误位置 1:1 表明了这一点)。

在这种情况下,该变量未定义,因为开发者控制台仅看到全局范围。就像这样做:

document.addEventListener('DOMContentLoaded', function () {
  // declare variable in inner scope
  var foo = 'bar';
});

console.log(foo); // can't see the inner scope

您可以做什么(仅用于调试!):

document.addEventListener('DOMContentLoaded', function () {
  // declare variable in inner scope, but also create a global one
  var foo = window.foo = 'bar';
});

console.log(foo); // print the global 'foo'

(显然,这不起作用,因为代码片段中未触发 DOMContentLoaded 事件。)

PeterMader
2017-06-10

我认为您正在尝试访问控制台中块级范围内的变量。

供您参考,如果变量在函数级范围内或回调中,则您无法访问浏览器控制台中的变量。如果该变量是全局变量,则可以访问控制台中的变量

Dinesh undefined
2017-06-10