javascript - JS这段code怎么理解?、嗯,有难度

查看:76
本文介绍了javascript - JS这段code怎么理解?、嗯,有难度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

var x = 10;                         //全局变量x

function foo(y) {                 //foo 函数声明
    var z = 30;                  //函数作用域中的z函数
    function bar(q) {           //被嵌套的函数bar,bar函数声明
        return x + y + z + q;  //bar函数的返回值
    }
    return bar;              //foo函数的返回值为 bar函数
}
var ba = foo(20);         //不懂 
ba(40);                  //不懂

这两行不懂的应该怎么解释啊?也在chrome上面运行了,结果是100
两个ba之间有什么关系呢?

var ba = foo(20);    
//这个是赋值语句,把foo函数赋给了变量a,但是foo(20)是什么意思?20应该是y的值
ba(40);             
//这个 ba(40)是什么意思?和var的ba又有什么关系??我上chrome跑了,这个ba和上一行的ba
//应该是同一个,ba,不能换名字。那如果是同一个ba,那这个40应该怎么传?为什么?

补充测试图片
顺便问一下,刚学JS,有好多语句看不懂,应该怎么办?有怎么找练手的项目。。。在DOM什么的没有学习的情况下。不然不练的话,学到DOM后,JS知识就都忘完了,而且理解的也忘记完了。。。。。

解决方案

第一步执行foo(20)返回一个闭包函数 bar(q){}。 也就是此时ba=bar(){}
第二补则是执行ba这个函数,也就是执行bar()这个函数

这篇关于javascript - JS这段code怎么理解?、嗯,有难度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆