稳扎稳打JS——自由变量

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

  • 自由变量相当于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。

  • 注意:自由变量的值一定要去函数定义处找!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码匠的流水账

聊聊HystrixThreadPool

hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/HystrixThreadPool.java

791
来自专栏我和未来有约会

简练的视图模型 ViewModel

patterns & practices Developer Center 发布了 Unity Application Block 1.2 for Silver...

2199
来自专栏MelonTeam专栏

Bitmap 源码阅读笔记

导语: Android 系统上的图片的处理,跟Bitmap 这个类脱不了关系,我们有必要去深入阅读里面的源码,以便在工作中能更好的处理Bitmap相关的问题...

2518
来自专栏WOLFRAM

向日葵中的数学之美

1853
来自专栏Petrichor的专栏

Dataset 列表:机器学习研究

In computer vision, face images have been used extensively to develop face recog...

1541
来自专栏Hadoop数据仓库

Oracle sqlldr 如何导入一个日期列

1. LOAD DATA INFILE * INTO TABLE test FIELDS TERMINATED BY X'9' TRAILING NULLCO...

1816
来自专栏码匠的流水账

spring security reactive获取security context

本文主要研究下reactive模式下的spring security context的获取。

1812
来自专栏搞前端的李蚊子

Html5模拟通讯录人员排序(sen.js)

// JavaScript Document  var PY_Json_Str = ""; var PY_Str_1 = ""; var PY_Str_...

5976
来自专栏前端儿

Web 前端颜色值--字体--使用,整理整理

颜色值 CSS 颜色使用组合了红绿蓝颜色值 (RGB) 的十六进制 (hex) 表示法进行定义。对光源进行设置的最低值可以是 0(十六进制 00)。最高值是 2...

2352
来自专栏码匠的流水账

java9系列(五)Stack-Walking API

java9新增这个类的目的是提供一个标准API用于访问当前线程栈,之前只有Throwable::getStackTrace、Thread::getStackTr...

421

扫码关注云+社区