初识前端——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(){}","翠花","翠花"。
浙公网安备 33010602011771号