<script>
//引用值
let a = new Object();
a.name = "ni"
// alert(a.name);//输出ni
//原始值
let b ="a";
b.name = "ni";;
// alert(b.name);//输出了未定义
//复制值
var c = 5;
var p= c;
c=c+2
//console.log(p)//5
//console.log(c)//7
//var p 初始化为var c ,他们两个的储存位置不同,所有他们2个是独立的。
const obj = new Object();
const big = obj;
obj.name = "hah";
//console.log(big.name)//hah
//obj保存了一个新的对象实例,然后被复制到big,big所复制的东西是一个指针,这个指针就是new object(),他们都是指向储存在堆栈中的对象。
//传递参数
function n(num){
num +=10;
return num;//返回值
}
let count=20;//变量
let r= n(count);//获取count的值,传值
console.log(count);//20
console.log(r)//30,因为+10
function set(obj){
obj.name="a";
obj = new Object();//这里,obj重写了,变成了一个本地的指针,当函数执行完之后,他会自动销毁。
obj.name="b";
}
let person = new Object();
set(person);
console.log(person.name);//a
</script>
<script>
//执行上下文与作用域
//作用域链
var color = "blue";
function changecolor(){
if(color==="blue"){
color = 'red';
}else{
color="blue";
}
}
changecolor();
//changecolor包含2个对象,一个是arguments,一个是color(全局上下文对象),通过作用域链能够访问到color。
var colora ="blue";
function changecolora(){
let an = "red";
function sw(){
let te = an;
an = color;
color = te;
//一个局部上下文
}
sw();//不能访问到te,因为他出去了
}
changecolora();//只能访问到colora,因为他在最外面,只能访问到最外面。
</script>