你能解释一下为什么变量名没有显示为undefined吗



<script>
var name;
var marks;
var pass_status=true;
document.writeln("name are:"+name);
document.writeln("pass status is:"+pass_status);
document.writeln("marks are:"+marks);
</script>

你能解释一下为什么变量name没有显示为未定义的吗?

name是全局变量,只需尝试:

console.log(window);

你会看到它有name属性,这就是为什么它没有被定义的原因。

如果在任何函数之外声明一个var变量,则它将被分配给全局对象,即浏览器中的window。由于namewindow的标准属性,因此在执行代码片段之前,它就已经存在。检查https://developer.mozilla.org/en-US/docs/Web/API/Window/name

因此,在您的情况下,调用name等于window.name,默认情况下这是一个空字符串。为避免此类副作用,建议使用ES6let/const变量声明。

let name;
console.log(name);

结果将是undefined,因为在这种情况下name没有附加到全局对象。

最新更新