JavaScript 一段神奇的代码

作者: print("") 分类: WEB前端 发布时间: 2018-05-20 22:23

J今天看到一个很有意思的代码分享一下:

我也是刚刚没有学多久的JS 我就一脸蒙蔽

       <script>
            function t1(age) {
            console.log(age);
            var age = 27;
            console.log(age);
            function age() {}
            console.log(age);


            }
         t1(3);
        </script>

我自认为第一个输出的age 会是3 结果  结果很尴尬。下面是浏览器运行的结果

function t1(age) {
            console.log(age);
            var age = 27;
            console.log(age);
            function age() {}
            console.log(age);


            }
         t1(3);
ƒ age() {}
 27
 27

我擦、为毛第一个age 是function age() 这个函数呢?  百度了一下  妈的。终于找到答案。

还是那个作用域和js 的内部的编译的问题,
首先是js 编译的过程中会出现3 个过程

active object ====>AO

1. 形式参数
2. 局部变量 
3. 函数声明表达式
1. 形式参数 

AO.age=undefined;
AO.age=3;
2.局部变量 

AO.age=undefined

3. 函数声明表达式 

AO.age=function()

经过这三部之后 第一哥age 是等于那个age函数的,也就是说声明函数的变量是比形式参数、局部变量权重高一点。
虽然是最后声明的,但是如果赋值的话之后还是函数的值。
牛逼牛逼 。佩服佩服百度、膜一波

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

说点什么

avatar
  Subscribe  
提醒