lom599乐百家官网大家帮我看一下这个JS输入的标题,蒙圈中。。。。

下面这段代码:

var a = 0, b = 0, c = 0;
var fn = functionb{
    return functionc{
        console.loga++,b++,c++;
    }
}

var fn1 = fna;
fn1b;

var fn2 = fnc;
fn2a;
fn2b;

输入的后果为:
0 0 0
1 0 1
2 1 0

为什么是这个后果呢?真的是不睬解。途经的帮忙表明一下,谢谢!

var a = 0,
  b = 0,
  c = 0;
var fn = functionb {
  return functionc {
    console.loga, b, c;
    a++;
    b++;
    c++;
  }
}

var fn1 = fna;
// 没啥好说的全部打印 0
fn1b;

// c为0,由于fn函数外部的++操纵并不会影响外部的变量
var fn2 = fnc;
// a为1,由于fn外部并没有a变量,以是a++操纵是指向的外部变量
// 此时a作为参数转达,在回调函数中变量为c以是在,回调函数中a,c都是为1的
fn2a;

// 此时fn函数中的b为1,由于fn的上下文是存在的,上一次调用的fn2函数时b++,影响此时还是有效的
// b为0,由于回调函数外部的b++操纵并不影响外部变量
// a后面曾经实行了2次++操纵以是为2
fn2b;

把次序稍微修正一下,看得会比较容易一点。这个示例主要是由于外部的变量与函数外部的变量定名相反,理解起来有点绕。
需求好好理解一下变量的作用域。

(看完/读完)这篇文章有何感想! lom599乐百家官网的分享…

发表评论

姓名 *
电子邮件 *
站点