每日一JavaScript:使用值操作数据与使用引用操作数据

数字是原始类型,使用值的数据操作

<script type="text/javascript">
<!--
var x=1;    //为变量x赋值1
var y=x;    //使用值的复制操作:变量y使用了一个独立的值1
//下面的函数可以说明使用值的操作
function add_total(total,x)
{
total=total+x;  //这里只改变了total的内部副本
return total;
}
//下面调用该函数,给它传递x和y存放的数值
//x的值将被复制,该值在函数中名称为total
//该函数会把y的一个副本值加到x的副本中
//这种操作不会影响到函数外部y的原始值
var q=add_total(x,y);
document.write("函数运行结果为:"+q+"<p>");
document.write("函数运行后x值为:"+x+"<p>");
document.write("函数运行后y值为:"+y+"<p>");
//下面是使用值的运算
//1是程序中的一个独立数值,用它和变量x中的存放的值进行比较
//在比较操作中,将对两个数字进行字节比较,看它们是否相同
if(x==1) {
y=2;      //如果x的值与直接量1相同,则y的值变为2
}
document.write("现在的y值为:"+y);
//-->
</script>

使用值操作数据

对象和作为特殊对象类型的数组及函数都是引用类型


<script type="text/javascript"><!--
//下面创建一个对象来表示2007年6月10日
//变量myyear存储的是对对象的引用,而不是对象本身
var myyear=new Date(2007,06,10);
//下面对引用进行复制操作,将得到对原始对象的一个新引用
//两个变量引用的是同一个对象值
var newyear=myyear;
//下面通过新的引用来改变对象
newyear.setDate(18);
//通过原始的引用可以看到对象的变化
//下面的返回值将是18,而不是10
myyear.getDate();
//下面使用引用进行比较操作
//当对上面定义的两个变量进行比较操作时
//尽管它们引用的日期不同,但引用是同一个对象
if(myyear==newyear) {  //比较两个变量是否相等
document.write("myyear == newyear 结果为:");
document.write(myyear == newyear); //这里直接输出逻辑值
}
else {
document.write("myyear == newyear 结果为:");
document.write(myyear == newyear); //这里直接输出逻辑值
}
//下面定义的两个变量引用的是两个不同对象
//两个对象表示的日期完全相同
var myyear_new=new Date(2007,06,10);
var newyear_new=new Date(2007,06,10);
//根据“引用比较”原则,不同的对象是不相同的
if(myyear_new==newyear_new) { //比较两个变量是否相等
document.write("newyear_new!= myyear_new 结果为:");
document.write(newyear_new != myyear_new); //这里直接输出逻辑值
}
else {
document.write("newyear_new != myyear_new 结果为:");
document.write(newyear_new != myyear_new); //这里直接输出逻辑值
}
// --></script>

使用引用操作数据
字符串的特殊性:在复制和传递字符串时使用的是引用,但对字符串进行比较时却使用的是值。


2 Responses to “每日一JavaScript:使用值操作数据与使用引用操作数据”

  1. 老时 says:

    老时不懂这些,汗,还是支持了

Post a Comment