1.
1 def func(arg,li=[]): 2 li.append(arg) 3 return li 4 v1 = func(1) 5 v2 = func(2,[]) 6 v3 = func(3) 7 print(v1) 8 print(v2) 9 print(v3)
最终输出结果为:
[1,3]
[2,]
[1,3]
1 def func(arg,li=[]): 2 li.append(arg) 3 return li 4 v1 = func(1) 5 print(v1) 6 v2 = func(2,[]) 7 print(v2) 8 v3 = func(3) 9 print(v3)
最终输出结果为:
[1]
[2,]
[1,3]
执行v1时,li就创建在内存,v2时,传入新的[],所欲i创建另一内存,v3时使用v1创建的内存
2.
1 n1 = [11,22,33,44,55] 2 n2 = n1 3 n3 = n1[:] 4
5 n1[0]=666
6 n3[1]=999
7
8 print(n1) 9 print(n2) 10 print(n3)
最终结果为:
[666, 22, 33, 44, 55]
[666, 22, 33, 44, 55]
[11, 999, 33, 44, 55]
因为n2 = n1,所以二者指向同一内存,n3 = n1[:]为切片,重新复制一份给n3
2018-09-06 13:34:41
3.
1 var v = 123; 2 function foo(){ 3 var v = 456; 4 function inner(){ 5 console.log(v) 6 } 7 return inner 8 } 9
10 result = foo() 11 console.log(result())
输出结果:
456
4.
1 Name='root'; 2 Age = 18; 3 function Foo(name,age){ 4 this.Name = name; 5 this.Age = age; 6 this.Func = function(){ 7 console.log(this.Name,this.Age); 8 (function(){ 9 console.log(this.Name,this.Age); 10 })(); 11 } 12 } 13 obj = new Foo('alex',666); 14 obj.Func()
输出结果:
alex',666
root 18
3.4解析:
1 this关键字: 2 每个函数中都有this 3 函数调用时,this=window 4 类new时, this=obj 5
6 function func(){ 7 #当作函数执行函数时,this=window 8 console.log(this) 9 } 10 func() 11
12 function Func(){ 13
14 } 15 obj = new Func() 16
17 js中无字典,只有对象: 18 Name = 'lxs'
19 obj = { 20 name:'root', 21 age:18, 22 Func:function(){ 23 #this = obj 24 console.log(this.name) #root 25 function.inner(){ 26 #this = window 27 console.log(this.Name) #lxs 28 } 29 inner() #相当于window.inner() 30
31 } 32
33 } 34 相当于new成了对象obj 35 通过一个对象调用类内部的方法时,this = 对象 36 obj.Func() Func内部的对象 = obj 37 结果为: 38 root 39 lxs 40
41 Name = 'lxs'
42 obj = { 43 name:'root', 44 age:18, 45 Func:function(){ 46 #this = obj 47 console.log(this.name) #root 48 var that = this
49 function.inner(){ 50
51 console.log(that.Name) #root 52 } 53 inner() #相当于window.inner() 54
55 } 56
57 } 58 obj.Func() 59 结果为:root root 60
61
62 自执行函数: 63 function.inner(){ 64
65 console.log(that.Name) 66 }() 67 相当于: 68 function.inner(){ 69
70 console.log(that.Name) 71 } 72 inner()