稳扎稳打JS——自由变量

来源:互联网 发布:nginx解决跨越 编辑:程序博客网 时间:2024/06/05 08:05

自由变量的作用域在程序运行前就已经确定!

  • 自由变量相当于Java中的全局变量,它在外层作用域中声明,但在内层作用域中使用,如下所示:
var a = 1;function fn(){    console.log(a);//a为自由变量}
  • 当自由变量所属的函数被定义时,自由变量的值就已经确定,是该函数定义处的父作用域中同名变量的值。

  • 在上述示例中,函数内部的a是自由变量,它的值是fn的父作用域中a的值,也就是1。

  • 来看下面的示例:输出结果为1

var a = 1;function fn1(fn){  var a = 2;  fn();}function fn2(){  console.log(a);}fn1(fn2);

fn2中的自由变量a在其定义时就已经确定,是它定义处的父作用域中的同名变量的值,而fn2定义处的父作用域为全局作用域,全局作用域中a的值为1,因此输出的结果为1。

  • 注意:自由变量的值一定要去函数定义处找!
3 1
原创粉丝点击