关于javascript:小记函数提升及变量提升

如果一个变量,还未定义就开始应用,就会触发“函数晋升及变量晋升”的机制
函数晋升及变量晋升形容
因为js的运行机制,简略概括为:js脚本,先解析代码,再执行它。解析的过程,会把其作用域内的函数申明取出来,再把变量都赋值为undefine。当执行的时候(就是咱们运行代码,能够打断点调式的时候),尽管一个变量未声明就应用了,然而它曾经在解析那一过程中被申明,作赋值操作了,所以,变量的值为undefine,如果是调用未声明函数,也能够失常应用
如果遇到函数名字和变量名字一样,都处于晋升状况的时候,函数晋升优先级大于变量(理论开发中会有人这么干嘛),然而当变量赋值后,变量的值就不再是函数了,例子见下

1.当形参和变量名字一样时

function test(arg) {//arg="hi"
            console.log(arg);//输入内容为“hi”
            var arg = "hello"; //此处赋值后,下面两处arge="hello"
            console.log(arg);//输入内容为“hello”
        }
        test("hi");

2.当形参和变量及函数名字一样时

function test(arg) {//arg = ƒ arg()
            console.log(arg);//输入内容为“function arg(){console.log("hello world");}”
            var arg = "hello";//此处赋值后,下面两处arge="hello"
            function arg() {
                console.log("hello world");
            }
            console.log(arg);//输入内容为“hello”
        }
        test("hi");

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理