About

<#TEMPLATE_INCLUDE_NINEPAGE_ABOUTME#>
  • May

    25

    当 JS 在同一个作用域中,函数名与变量名相同时

    • 0 Comments
    • JavaScript
    • 发布:古树
    • 引用:0
    • 浏览:

    JS 运行时环境(JS 解析器)需要先加载 JS 代码时,然后解析(编译)JS 成为可执行代码,然后运行可执行语句。而函数定义实际上是在解析时发生(也就是在运行 JS 代码之前)。

    <script language="javascript"> 
    alert(f(4));
    var f = 0;
    function f(x){
     return x * x;
    }
    alert(f);
    </script>

    先输出 16,再输出 0。这种解析过程往往被称为“函数向前引用”,就好像函数定义被提前到了所有可执行语句之前。实际函数定义在加载 JS 并解析时就动态生成了一个与函数名相同的变量名,所以当后面相同的变量名再次出现时覆盖了前面变量的定义(函数定义和变量定义并不在同时发生)。

    • Tags:
    • 2014 / 5 / 25
    相关文章:
      Post Comment.

      发表评论