初识前端——JavaScript

在<script>...</script>中的函数在执行前会有一个AO(action object)对象提前进行解析,其先后顺序为

  ①形式参数(function func("形参x"){...}func("实参")→AO.x初始值=undefined,若存在这个表达式,AO.x将=“实参”;

  ②局部变量(func(){...var x=......})→以形式参数对应的结果为准,若函数无形参,AO.x=undefined,若有形参,AO.x=“实参”;

  ③函数声明表达式(func(x){...function x(){}...})→若出现函数表达式,会将前2个覆盖掉,AO.x=function x(){}

 

示例:

<!DOCTYPE html>
<html lang ="en">
<head>
    <meta charset="UTF-8"/>
    <title>Title</title>
</head>
<body>
    <script>
        function g1(goddess){         //形式参数
            console.log(goddess);
            var goddess = "翠花";     //局部变量
            console.log(goddess);
            function goddess(){goddess="如花"}       //函数声明表达式
            console.log(goddess);
        }
        g1("乔碧lo");
    </script>
</body>
</html>

大多数初学者给出的答案会是"乔碧lo","翠花",“function goddess(){}"/"如花",这明显草率了;

而在熟悉了JavaScript的分析机制后,答案是"function goddess(){}","翠花","翠花"。

                                                                                                 

posted on 2020-10-18 17:15  行而下的坏死  阅读(53)  评论(0)    收藏  举报