你好,朋友。
欢迎进入JS基础引导——变量
前言
经过了前段时间的JS基础引导,算是让完完全全的小白有了比较不夯实的基础。后续配合学校课程讲到的时候进行再次巩固,便于更好的理解。接下来涉及到的知识,个人认为是比前段时间更高级一点点点点的基础知识。写在这里,一方面是给各位一个引导,另一方面也是为了自省。各位,共勉。
变量
基本类型和引用类型的值
js变量可能包换两种不同类型的值:基本类型值和引用类型值。
基本类型值:简单的数据段,比如前面提到的五个基本类型。
引用类型值:可能由多个值构成的对象,比如唯一的复杂类型——Object对象。
复制变量值
在复制变量的时候,基本类型和引用类型是有很大区别的。
对于基本类型来说:他的复制是重新创建一个对象,然后让这个变量的值和被复制的值相同。
对于引用类型来说:他的复制是创建一个指针类型的副本。
通俗点来说:
假设被复制的变量是一个冰箱a,那么基本类型的复制就是又买了一个一模一样的冰箱b,引用类型的复制就是给冰箱a新取了一个名字冰箱c。看起来冰箱a和冰箱c不一样,实际上这两个代表同一个冰箱a。使用当你往冰箱c放东西的话,从冰箱a也可以取出来。
传递参数
在传递参数的时候,会涉及到一个名词叫做局部变量。
局部变量:即命名参数,或者说,就是你定义方法时先括号里面的arg1。
局部变量的作用效果和存在时间都只在方法内有效,当运行完方法之后,立刻被销毁。
对于基本类型:在经过方法的修改之后,不会对原变量的数值产生任何问题。
如下:
function addTen(num){
num += 10;
return num;
}
var count = 20;
var result = addTen(count);
alert(count); //20,没有变化。
alert(result); // 30
可以看出,count不会进行任何改变,而返回值需要你定义另一个变量(如上面的result)来接收。
对于引用变量:经过方法的修改之后,会对原变量的数值产生影响。(上面的冰箱理论)
如下:
function setName(obj){
obj.name = "Nicholas";
}
var person = new Object();
setName(person);
alert(person.name); //"Nicholas"
可以看出,当进行修改之后,原变量就会进行变动,因为obj实际上是一个指针。
对于指针来说,他指向的时同一个对象。所以修改了就是修改了。