<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
。由于name
是window
的标准属性,因此在执行代码片段之前,它就已经存在。检查https://developer.mozilla.org/en-US/docs/Web/API/Window/name
因此,在您的情况下,调用name
等于window.name
,默认情况下这是一个空字符串。为避免此类副作用,建议使用ES6let/const
变量声明。
let name;
console.log(name);
结果将是undefined
,因为在这种情况下name
没有附加到全局对象。