4-13 参数视为局部变量

来源:4-13 JS解析机制详解

RogerLeung

2018-07-19 22:29:59

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);

同理?

写回答

3回答

好帮手慕糖

2018-07-22

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

祝学习愉快~

0

好帮手慕星星

2018-07-20

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

http://img.mukewang.com/climg/5b5187750001b65403070202.jpg


0
hogerLeung
h 那为什么a=2又是局部变量呢?不是说没有var 的是全局变量?
h018-07-21
共1条回复

好帮手慕星星

2018-07-20

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。和下面代码可以理解成一样。祝学习愉快~~


0
hogerLeung
h 都说不带var的是全局声明,但是这里a又视作参数传进去了,参数又视作局部声明,矛盾了啊,所以我问的是能不能按照我说的那样理解。
h018-07-20
共1条回复

0 学习 · 4826 问题

查看课程

相似问题

4-6选择题

回答 1

回答 2

4-9 作用域

回答 2