centos 6.2升级6.5遇到的问题及解决方法
2014-03-03 10:20
423 查看
ECMAScript中所有函数的参数都是按值传递的。
因为访问变量有按值和按引用两种方式,而参数只能按值传递,这可能会让我们感到困惑。
在向参数传递基本类型的的值时,被传递的值会被复制给一个局部变量(即命名参数)。在向参数传递引用类型的值时,会把这个值在内存中的地址复制给一个局部变量,因此,这个局部变量的变化会反映在函数的外部。为了证明对象是按值传递的,我们看下面的一个例子:
fuction setName(obj){
obj.name="Nicholas";
obj=new Object();
obj.name="gred";
}
var person=new Object();
setName(person);
alert(person.name); //Nicholas
在把person传递给setName()后,其name属性被设置成为“Nicholas”。然后又将一个新的对象赋给变量obj,同时将其name属性设置为“gred”。如果对象是按照引用传递的话,那么person就会自动的被修改为指向其name属性为“gred”的新对象。但是,当接下来再访问person时,显示的值仍然是“Nicholas”。这就说明了即使在函数内部修改了参数的值,但原始的引用仍然不变。实际上,当在函数内部重写obj时,这个变量的引用就是一个局部对象了,而这个局部对象会在函数执行完毕时立即销毁。
可以把ECMAScript函数的参数想象成为局部变量。
因为访问变量有按值和按引用两种方式,而参数只能按值传递,这可能会让我们感到困惑。
在向参数传递基本类型的的值时,被传递的值会被复制给一个局部变量(即命名参数)。在向参数传递引用类型的值时,会把这个值在内存中的地址复制给一个局部变量,因此,这个局部变量的变化会反映在函数的外部。为了证明对象是按值传递的,我们看下面的一个例子:
fuction setName(obj){
obj.name="Nicholas";
obj=new Object();
obj.name="gred";
}
var person=new Object();
setName(person);
alert(person.name); //Nicholas
在把person传递给setName()后,其name属性被设置成为“Nicholas”。然后又将一个新的对象赋给变量obj,同时将其name属性设置为“gred”。如果对象是按照引用传递的话,那么person就会自动的被修改为指向其name属性为“gred”的新对象。但是,当接下来再访问person时,显示的值仍然是“Nicholas”。这就说明了即使在函数内部修改了参数的值,但原始的引用仍然不变。实际上,当在函数内部重写obj时,这个变量的引用就是一个局部对象了,而这个局部对象会在函数执行完毕时立即销毁。
可以把ECMAScript函数的参数想象成为局部变量。
相关文章推荐
- Linux典藏大系再度来袭!!!京东大促销活动!!!!
- Linux下cp覆盖合并文件夹去除覆盖确认
- &nb
- linux命令 df
- Linux内核设计的艺术-进程2的创建及执行
- linux中文输入法,ibus光标不跟随
- 如何更改Linux yum源?
- 如何更改Linux yum源?
- linux的hostname修改详解
- CENTOS在输入ifconfig命令时,提示没有命令的处理方法
- linux su和sudo命令的区别
- CentOS安装Node.js简单教程
- 第十七章、程序管理与 SELinux 初探
- CentOS6.3系统安装SCP命令
- 第十四章、Linux 账号管理与 ACL 权限配置
- SecureCRT安装教程+技巧总结(linux服务器方向)
- 第八章、Linux 磁盘与文件系统管理
- 第七章、Linux 文件与目录管理
- 第六章、Linux 的文件权限与目录配置
- 第四章、安装 CentOS 5.x 与多重开机小技巧