js参数是按什么传递的
2016-07-11 15:13
357 查看
本文内容为阅读博文baidu.com后总结而得,其中代码示例均引用自该博文
对象的值是可以修改的
基本类型的传递
按值传递。也就是说,调用函数时,其形参为实参的副本,修改形参并不会影响传入的实参值。var a = 1; function foo(x) { x = 2; } foo(a); console.log(a); // 仍为1, 未受x = 2赋值所影响
对象类型的传递
按共享传递。也就是说,形参为实参引用的副本。当直接修改引用时,不会应该实参值,但引用副本与引用所指向的对象是相同的,所以当我们修改实参对象的具体属性时,会同样修改实参的值。var obj = {x : 1}; function foo(o) { o = 100; } foo(obj); console.log(obj.x); // 仍然是1, obj并未被修改为100. var obj = {x : 1}; function foo(o) { o.x = 3; } foo(obj); console.log(obj.x); // 3, 被修改了!
基本类型和对象的修改
基本类型的值其实是不能修改的,我们每次对基本类型修改时,并非真的修改,而是生成了一个新的基本类型对象。var str = "abc"; str[0]; // "a" str[0] = "d"; str; // 仍然是"abc";赋值是无效的。没有任何办法修改字符串的内容
对象的值是可以修改的
var obj = {x : 1}; obj.x = 100; var o = obj; o.x = 1; obj.x; // 1, 被修改 o = true;//由于对象是按照共享传递的,o是obj引用的一个副本,所以修改的也是该副本,而非obj obj.x; // 1, 由于该的只是引用副本的内容,并未修改引用副本所指向的内容,故不会因o = true改变
相关文章推荐
- html+css复习之第2篇 | javascript
- JavaScriptCore.framework简单使用
- JSP的scope作用域
- Webx Json输出源码
- ubuntu 安装json库
- JSP乱码问题
- 一个基于Extjs 3的支持单元格合并的面板
- js中return的作用
- SharePoint 2013 树形导航菜单,读取指定文档库下的文件夹和文件(非JS部分)
- js笔记--错误处理与调试
- js正则表达式判断数字范围
- [JQ权威指南]全局函数getJSON()实现异步获取数据
- Javascript数组操作详细解答
- Js判断键盘按键
- Three.js(4)Light
- xStream完美转换XML、JSON
- JavaScript 数组详解以及常用方法
- JavaScript对象的理解 及 字面量对象与数组的关系
- JS函数调用的四种方法
- JavaScript从父页面获取子页面的值(子页面又如何访问父页面)