关于js的值传递和引用传递
不知道为啥有个坑,双向绑定,不过当有个数组为空时,它不会发送空的数组,而是不发送。
这就坑爹了。导致老是删不掉。
处理了下,改成验证为空时,发送'[]‘字符串。
成功。
但是avalon绑定ms-repeat时只能绑数组和对象。
所以在获取后对它操作。进行转换成空数组。
但是一直都不成功。
一直都会提示只能绑数组或对象。
参考了其他的例子,并没有什么区别。
同样是这样操作。可就是不行。
今天在调试时,突然发现,是在转换时出现了问题。
然后换成直接操作引用过来的对象,而不是赋值后我新定义的对象。
因为赋给它的值是一个字符串,而不是一个对象。
【虽然在js里,所有的都是对象 = =。但这有点坑窝,似乎。】
这样就不会出现这样的错误了。
原来,基本类型是没有引用传递的。而数组、对象、函数则可以。
之前一直搞不清,js几时的是值传递,几时是引用传递。
参考:http://blog.sina.com.cn/s/blog_52132c010102wa81.html   感觉评论比较简洁
5种基本数据类型:number/string/null/boolean/undefined
引用类型:数组/函数/对象
function chainStore() 
{ 
var store1='Nike China'; 
var store2=store1; 
store1='Nike U.S.A.'; 
alert(store2); //Nike China 
} 
chainStore(); 
基本数据类型的引用及再次赋值操作,等于是:复制了一个值,也就是内存里有两块区域,分别保存了相同的两个值。var store1='Nike China'; 把Nike China赋值给了store1。而var store2=store1; 又开辟一个新内存地址,把Nike China复制,复制而不是赋值,给了store2。现在呢,内存里有两块区域:store1和store2,都保存的是Nike China。这个就好理解了吧。所以store1随便修改,store2还是保持不变。
而引用类型,举例:function chainStore() { 
var store1=['Nike China']; 
var store2=store1; 
alert(store2[0]); //Nike China 
store1[0]='Nike U.S.A.'; 
alert(store2[0]); //Nike U.S.A. 
} 
chainStore();
为什么会两次输出store2结果不同呢?因为:这个是数组,属于引用类型。虽然有store1和store2两个变量,但是在内存中(引用地址)是同一个地址,这个知道指针概念的同学会很好理解。所以第一次var store2=store1; 其实只把引用地址交给了store2.所以两个store共享同一个【Nike China】,而当修改了store1的时候,那么他们共享的内容就发生了变化(因为一共就这一个东西,而不是各自有一个),导致store2输出的时候也发生了变化,变成了【Nike U.S.A.】
以上,简单举例引用类型,和基本数据类型
关于js的值传递和引用传递的更多相关文章
- 晨叔技术晨报: 你真的搞懂JS中的“值传递”和“引用传递”吗?
		晨叔周刊,每周一话题,技术天天涨. 本周的话题是JS的内存问题(加入本周话题,请点击传送门). 图 话题入口 今天的技术晨报来,就来谈谈JS中变量的,值传递和引用传递的问题.现在,对于很多的JSer来 ... 
- JavaScript 函数参数传递到底是值传递还是引用传递
		tips:这篇文章是听了四脚猫的js课程后查的,深入的理解可以参看两篇博客: JavaScript数据类型--值类型和引用类型 JavaScript数据操作--原始值和引用值的操作本质 在传统的观念里 ... 
- vue中动态加载组件+开发者模式+JS参数值传递和引用传递
		今天写vue里面通过接口反参动态加载组件时候 跟着同学...学习到了 一.先说说vue 内置组件 component 的用法 component组件可以来专门用来进行组件的切换,使用is来绑定你的组件 ... 
- JavaScript传递变量:值传递?引用传递?
		今天在看 seajs-2.2.1/src/util-events.js源码,里面有段代码不是很理解: var events = data.events = {} // Bind event seajs ... 
- Java中引用类型变量,对象,值类型,值传递,引用传递 区别与定义
		一.Java中什么叫做引用类型变量?引用:就是按内存地址查询 比如:String s = new String();这个其实是在栈内存里分配一块内存空间为s,在堆内存里new了一个Stri ... 
- java中值传递和引用传递
		最近工作中使用到了值传递和引用传递,但是有点懵,现在看了下面的文章后清晰多了.一下是文章(网摘) 1:按值传递是什么 指的是在方法调用时,传递的参数是按值的拷贝传递.示例如下: public clas ... 
- Java中的值传递和引用传递
		这几天一直再纠结这个问题,今天看了这篇文章有点思路了,这跟C++里函数参数为引用.指针还是有很大区别. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里 ... 
- java的值传递和引用传递
		昨天博主在对于值传递和引用传递这里栽了一个大坑啊,导致一下午时间都浪费在这里,我们先说下值传递和引用传递java官方解释: 值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对 ... 
- PHP值传递和引用传递的区别
		PHP值传递和引用传递的区别.什么时候传值什么时候传引用 (1)按值传递:函数范围内对值的任何改变在函数外部都会被忽略 (2)按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改 (3)优 ... 
- 【转载】C++ 值传递、指针传递、引用传递详解
		原文链接:http://www.cnblogs.com/yanlingyin/ 值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角度来说,值传递是单向的(实参->形 ... 
随机推荐
- 洛谷 [P2575] 高手过招
			SG函数+状压记忆化搜索 观察题目发现,每一行都是独立的,只要处理出来每一行的SG值,异或起来就好 每一行的SG值可以用状压+记忆化搜索的方法来求,对位运算技术是个很大的考验 注意SG值要预处理出来, ... 
- Peaks BZOJ 3545 / Peaks加强版 BZOJ 3551
			Peaks [问题描述] 在Bytemountains有N座山峰,每座山峰有他的高度h_i.有些山峰之间有双向道路相连,共M条路径,每条路径有一个困难值,这个值越大表示越难走,现在有Q组询问,每组询问 ... 
- Yii 之控制器创建使用
			在根目录下的controllers目录下创建控制器HelloController.php: <?php namespace app\controllers; use yii\web\Contro ... 
- Laravel 中视图中使用PHP代码
			{{ $name }}{{ date('Y-m-d H:i:s',time()) }}{{ in_array($name,$arr)?'true':'false' }} {{ isset($name) ... 
- WEB学习-CSS基础选择器
			基础选择器 标签选择器 就是标签的名字. • <h1>前端与移动开发<span>1期班</span>基础班</h1> css: • <style ... 
- Spring 定时器 定时访问数据库并发送邮件
			我这里有两个案例的方法: 第一种:使用Spring quartz: 我这里使用的jar:spring-context-support.jar.quartz-1.6.5.jar ============ ... 
- BZOJ——1626: [Usaco2007 Dec]Building Roads 修建道路
			http://www.lydsy.com/JudgeOnline/problem.php?id=1626 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1 ... 
- Maven用项目模板生成项目
			Archetype插件是Maven生成项目的项目模板,项目模板就是一个框,把文件夹这些定好,然后就可以在上开写具体逻辑等等. 最常用的命令: mvn archetype:generate 这个是生成一 ... 
- android  按两次物理返回键退出程序
			<?xml version="1.0" encoding="utf-8"?> <!-- 定义当前布局的基本LinearLayout --> ... 
- 【PostgreSQL】安装使用步骤
			1.下载地址 https://www.postgresql.org/download/windows/ 下载按照较新版本,和平台相一致就好 2.安装 选择安装地址 数据存放地址 密码设置 端口使用默认 ... 
