4-13 参数视为局部变量

4-13 参数视为局部变量

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

a=2 不是全局变量的声名,可否理解成参数a是作为局部变量先声明了一次了?

var a = 1;

    function fn(a){

    var a;

    console.log(a);

    a=2;

    }

    fn();

    console.log(a);

同理?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕糖 2018-07-22 15:04:29

你好,这里是因为你把a作为一个参数了哦,若把定义函数中的参数a去掉,那么就是在函数外定义了全局变量,a,然后在函数中该变量全局变量a的值。

祝学习愉快~

好帮手慕星星 2018-07-20 14:55:58

形参中虽然有a,但是调用fn函数的时候并没有传参啊

http://img1.sycdn.imooc.com//climg/5b5187750001b65403070202.jpg


  • 提问者 RogerLeung #1
    那为什么a=2又是局部变量呢?不是说没有var 的是全局变量?
    2018-07-21 19:10:24
好帮手慕星星 2018-07-20 10:03:46
var a = 1;
    function fn(a){
        console.log(a);
        a=2;
    }
    fn();
    console.log(a);

在这段代码中,a=1是全局变量,a=2是局部变量,fn函数中给a重新赋值之前打印a,所以是undefined,这时候a只是定义了而已。最后打印的a是全局的a,为1。和下面代码可以理解成一样。祝学习愉快~~


  • 提问者 RogerLeung #1
    都说不带var的是全局声明,但是这里a又视作参数传进去了,参数又视作局部声明,矛盾了啊,所以我问的是能不能按照我说的那样理解。
    2018-07-20 14:34:27
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师