如何解决函数表达式本身不能将Name分配给另一个值
| 在下面的代码中:(function (){
function test(){};//\"function\"
var test;//\"undefined\"
var printTest = typeof test;
document.write(printTest);
})();
printTest将显示\“ function \”而不是\“ undefined \”,这是有道理的,因为根据我的理解,任何变量声明都始终被“悬挂”在执行上下文的顶部(在这种情况下为函数执行上下文) )这使函数声明\“ test()\”成为稍后在当前执行上下文中出现的声明。现在考虑这段代码,在这里我实际上为var声明\“ var test = 1 \”赋了一个值。
(function (){
function test(){};
var test=1;//assign value to a variable here
var printTest = typeof test;
document.write(printTest);
})();
然后printTest现在显示\“ number \”,这意味着执行上下文现在保持不同的顺序。有人可以解释一下这里实际发生了什么吗?
解决方法
吊装将实际分配与变量声明分开。它真正在做什么是这样的:
(function (){
var test,printTest;
test = function (){};
test = 1;//assign value to a variable here
printTest = typeof test;
document.write(printTest);
})();
, “ 3”仅表示“任何测试都应在本地范围内”。它之所以未定义,仅是因为您没有为它分配值(除非您使用function test(){};
,这就是为什么您得到function
而不是undefined
)的原因。
在第二个示例中,function test(){};
仍为其分配一个功能,但var test=1;
用with9ѭ覆盖该功能。给the9赋值后再使用use10ѭ,它会报告它是一个数字。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。