任何语言都有自己的操作数据的方法;

Js也不例外,js有3种重要的方式来操作一个数据值。

1》复制它。例如把它赋给一个新的变量。

2》把它作为参数传递给一个函数或方法。

3》可以和其他值比较大小。

Js通过传值和传址2种方式操作这些数据的值

从名称可以看处,传值 是通过传递值来操作数据。在赋值的过程中,对实际的值进行了拷贝,存储到一个新的变量中。拷贝的值和原来的值是2份完全独立的值。所以如果你改变了拷贝的值,并不会影响原来的值。当比较大小时候,通常进行琢个字节比较。

传址(传地址) 从名字来看,就是通过传递地址来操作数据。在赋值的过程中,对实际的值的地址(可以说是引用)进行了拷贝,他们不是完全的独立,所以如果你通过引用改变了值,那么原始的值也会改变。当比较大小的时候,通常是看他们是否引用同一个地址来比较。

简单的传址例子:
var a = new Date();
alert(a.getDate());
var b = a ;
b.setDate(21);
alert(a.getDate()) // 输出21 
 
 
*********************************一般来说***************************************
基本数据类型通过传值来操作的。(如果忘记了哪些是基本数据类型,可以往回看。)
对象数据类型通过传址来操作的。(比如 数组和函数)
 
<script>
//传值
a=1;
b=a;
b=2;
alert(a); //输出 1
//传址
x=[1,2];
y=x;  // 赋给y的只是x的一个引用,而不是x本身。数组已经在语句中被赋值了,执行过这段代码后,仍旧只有一个数组对象,只不过我们有2个对他的引用了。
y[0]=2;
alert(x[0] +" | " +x[1]);  //输出 2  |  2
</script>
 
总结:
类型
复制
传递
比较
数字
传值
传值
传值
布尔
传值
传值
传值
字符串
不可变
不可变
传值
对象
传址
传址
传址
不可变:在JS中,没有方法去改变字符串值的内容。
对字符串来说,传值还是传址,意义不大。

JS 操作一个数据值的更多相关文章

  1. ADO.NET笔记——利用Command对象的ExecuteScalar()方法返回一个数据值

    相关知识: 有些SQL操作,例如SUM,只会从数据库返回一个数据值,而不是多行数据 尽管也可以使用ExecuteReader()返回一个DataReader对象,代表该数据值,但是使用Command对 ...

  2. js操作对象属性值为字符串

    今天在项目开发中遇到一个没遇到过的问题,这个问题是需要对比两个对象a和b,a是一个只有一个属性的对象,b是一个含有多个属性对象,如果b中包含和a一模一样的属性名和值,则把这个一样的属性和值从b中删除了 ...

  3. JSON平铺功能的实现(JS操作JSON数据)

    一.什么是JSON平铺 JSON平铺分成两种: 平铺的json转树结构的json 例如: { a: 'value', b: 'b1.value' } // 转换成=> { a: 'value', ...

  4. JS返回一个数据的千分位格式

    /** * 价钱转换-从右往左每3位数字加一个逗号 * @param price 需要转换的价格 */ formatPrice(price){ var newPrice = price.split(' ...

  5. js之操作JSON数据

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...

  6. js中如何操作json数据

    一.要想熟练的操作json数据,就先要了解json数据的结构,json有两种结构:对象和数组. 1.对象 一个对象以“{”开始,“}”结束.每个“名称”后跟一个“:”:“‘名称/值’ 对”之间使用“, ...

  7. AudioPlayer.js,一个响应式且支持触摸操作的jquery音频插件

    AudioPlayer.js是一个响应式.支持触摸操作的HTML5 的音乐播放器.本文是对其官网的说用说明文档得翻译,博主第一次翻译外文.不到之处还请谅解.之处. JS文件地址:http://osva ...

  8. Js操作Select大全(取值、设置选中)

    Js操作Select是很常见的,也是比较实用的. jquery操作select(取值,设置选中) 每一次操作select的时候,总是要出来翻一下资料,不如自己总结一下,以后就翻这里了. 比如<s ...

  9. js判断一个值是空的最快方法是不是if(!value){alert("这个变量的值是null");}

    !逻辑非 操作符(js)-操作于任何值,(!undefined)(!Null)(!任何对象)(!"")(!"lihuan")(!任何非零数字值) (!0)(!N ...

随机推荐

  1. ng-class的使用

    例如: td(ng-class="{0:'text-warning',1:'text-primary'}[bj.flag]") {{bj.flag | bjFlagfilter}} ...

  2. 如何设置listview每个item高度

    据我所了解,listview每行的宽度是由 inflater填充布局中高度最大的那个控件的高度... public  void setListViewHeightBasedOnChildren(Lis ...

  3. UNIQUE NullAble

    一般情况 UNIQUE 不应该出现nullable的 但是如果我们要支持也是有办法的,就是写一个filter. https://msdn.microsoft.com/en-us/library/ms1 ...

  4. USB 0xC0000012 错误详解

    0xC0000012Bus Hound 6.01 capture on Windows Vista Service Pack 1 (x86). Complements of www.perisoft. ...

  5. vector,list和deque区别

    stl提供了三个最基本的容器:vector,list,deque. vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由 ...

  6. vimrc 留备份

    set encoding=UTF-8 "encode with UTF-8"set backspace=2set nusyn onset ai!syntax enablesynta ...

  7. openstack neutron debugs listss

    Connection to neutron failed: [Errno 111] Connection refused

  8. jQuery 左侧滑动

    $("#slideleft button").click(function(){ var $lefty = $(this).next(); $lefty.animate({ lef ...

  9. Lesson2.1:LinkedList、ConcurrentLinkedQueue、LinkedBlockingQueue对比分析

    写这篇文章源于我经历过的一次生产事故,在某家公司的时候,有个服务会收集业务系统的日志,此服务的开发人员在给业务系统的sdk中就因为使用了LinkedList,又没有做并发控制,就造成了此服务经常不能正 ...

  10. 深入解读ESB与SOA的关系

    时至今日,SOA的概念渐渐清晰了.   有关ESB的概念,已经吵了好多年了,还是没有定论. 我个人认为,ESB本来就是抽象的概念,而且内涵丰富,在不同的场合含义不同.因此应该从不同的角度来认识.   ...