[英]weird variable hoisting in javascript
所以我们知道用 var 关键字声明的变量被提升了,如果我们在初始化之前尝试访问它们的值,我们会得到未定义的。 但是,在下面记录名称变量的代码中,记录了 function 并且未定义为什么?
console.log(name);
console.log(lol);
var name = function(args = "Hello World"){
console.log(args)
}
var lol = function(args = "Hello world") {
console.log(args)
}
output 是
function(args = "Hello World"){
console.log(args)
}
和
main.js:57 undefined
为什么名称变量未定义?
window 是根 scope 已经有一个名称属性。 尝试以下操作并查看控制台中的 output。 如果单击链接,则打开的页面将 MyWin 命名为 output。
HTML (test.html)
<head>
<title>test</title>
</head>
<body>
<a href="test.html" target="MyWin">Click me!</a>
<script src="test.js"></script>
</body>
</html>
Javascript (test.js)
console.log("name", name);
console.log("notname", notname);
console.log("lol", lol);
var notname = function (args = "Hello World") {
console.log(args)
}
var lol = function (args = "Hello world") {
console.log(args)
}
考虑代码
console.log(test); var test = function(args = "Hello World"){ console.log(args) }
这将返回undefined
因为只有声明被提升。 也就是说,你提升后的代码将是
var test; console.log(test); test = function(args = "Hello World"){ console.log(args) }
我认为您应该像那样记录为什么您感到困惑。
console.log(name); console.log(lol); var name = function(args = "Hello World"){ console.log(args) } var lol = function(args = "Hello world") { console.log(args) } console.log(name); console.log(lol);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.