您现在的位置: 365建站网 > 365学习 > Professional javascript for web Developers 2nd Edition 学习笔记(

Professional javascript for web Developers 2nd Edition 学习笔记(

文章来源:365jz.com     点击数:133    更新时间:2009-09-15 09:47   参与评论

    昨天写的实在不咋样,今天决定用windows live writer来写,呵呵O(∩_∩)O~。

  •  原始值和引用值的复制问题

             看两个图吧

image image

                                                                     引用值的复制

   num1和num2是完全分离的,因为只是复制了值。两个变量可以分别使用,不会产生关联的影响。

  obj1和obj2是关联的,因为现在复制的是地址,指针会指向堆中的同一个对象。

  •  参数传递 

  在ECMAScript中所有的参数传递都是传值的,如下

function addTen(num) {
  num += 10;
  return num;
}
var count = 20;
var result = addTen(count);
alert(count); //20 - no change
alert(result); //30

函数addTen()有一个参数num,它实质上是一个局部变量。当调用的时候变量count作为一个参数被传递,变量值是20,它被复制到参数num中用于内部addTen()函数。在函数内部num的值加10,但是他并没有改变存在于函数外面的原始变量count的值。参数num和变量count互不相识,它们只是碰巧有相同的值。如果num作为引用类型传递,count的值也会改变为30.

function setName(obj) {
  obj.name = “Nicholas”;
}
var person = new Object();
setName(person);
alert(person.name); //”Nicholas”

function setName(obj) {
  obj.name = “Nicholas”;
  obj = new Object();
  obj.name = “Greg”;
}
var person = new Object();
setName(person);
alert(person.name); //”Nicholas”

上面两段代码说的是obj是通过引用类型访问一个对象的,但是在函数中它也是传值的。

用一句话来总结ECMAScript参数传递就是:在ECMAScript中,函数参数只不过是一个局部变量。

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (133人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------