<script>
    var a =1
    function a() {
        console.log("sdfdsf")
    }
    a()
</script>
Uncaught TypeError: a is not a function

原因在于javescript先定义了函数名(函数声明优先于变量声明),在定义变量名,所以先定义函数 a() ,有定义了 变量 a ,导致 a() 函数 被覆盖(解决:变量名不和函数名重复)

 

a = 1
def a():
    print("sdfsd")

a()
<<<sdfsd

对于pyhton来说正常的自上而下定义

 

a = {}
b = c = a
c["x"] ="y"
print(a,b,c)    <<<{'x': 'y'} {'x': 'y'} {'x': 'y'}
c = "d"
print(a,b,c)  <<<{'x': 'y'} {'x': 'y'} d

 

图示:

三个变量指向同一个内存地址,任何一个变量对他们修改,都是修改的是同一个内存地址中的值

 

 

<script>
    var a ={a:"1"}  //key 可以不加双引号
    var b = a
    a.x = a = {a:"2"}   //相当给字典添加了一个key(a) val({a:"2"}) 现在字典对象变成{a:"1",x:{a:"2"}},变量名a 指向--{a:"1"}  变量名b指向--{a:"1",x:{a:"2"}}

    console.log(a.x)   //undefined
    console.log(b.x)   //{a: "2"}
    console.log(a)     //{a: "2"}
    console.log(b)     //{a:"1",x:{a:"2"}}
</script>

图示:

 

版权声明:本文为yanxiaoge原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/yanxiaoge/p/10488174.html