微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

函数表达式本身不能将Name分配给另一个值

如何解决函数表达式本身不能将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 举报,一经查实,本站将立刻删除。