**_数据类型_**
**数据类型赋值上的区别**
1、基本复制类型
==>就是把变量存储的值直接赋值给另一个变量
==>赋值过后两个变量就没有关系了
2、复杂数据类型
==>因为复杂数据类型中,变量存储的是地址
==>赋值的时候,实际上是吧变量的地址给了另一个变量
==>赋值过后,两个变量操作一个空间(一个门,两把钥匙)
var o1={
str="123"
num=123
}
var o2=o1
o1.str="345"
console.log(o2)//str="345" num=123
3、实参和形参的交互
==>实参和形参的交互,和变量赋值是一个道理
function fn (a,b){
a=200; // 形参 a 和全局 o1 没有关系 ,修改的是全局 a
b.num=12345 形参 b 和全局 o2 指向同一个对象空间
}
var o1=100
var o2={
str="123"
num=123
}
fn(o1,o2)
console.log(o1) //100
console.log(o2)// str="123" num=12345
4、函数的返回值
==>把函数内部的数据 return 出去
==>在函数外面有一个变量接收
function fn (a,b){
a=200;
var o1={
str="123"
num=123
}
return o1
}
var res=fn()
**函数也是一个对象**
console.dir() //详细打印
函数有两个功能
1、函数名
==>把函数当作一个函数执行
2、函数名.成员名='值'
==>存储一些数据
function fn (){
a=200;
b.num=12345
}
//把函数当作一个对象来使用
fn.sum=2222;
console.log(fn())//a=200;b.num=12345 ;sum=2222
**注意**
这两个功能互相不干扰,不能互相访问
console.log(sum)//报错 is not a difined