js 中js的值和值的方法是什么意思,参数和值有什么区别?

JavaScript参数传递中值和引用的一种理解_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
JavaScript参数传递中值和引用的一种理解
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩2页未读,
定制HR最喜欢的简历
你可能喜欢  也许大家对于函数的参数都不会太在意,简单来说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。深入研究,你会发现其实没那么简单,这个传参是要分俩种情况(其实这是个错误的说法,ECMAScript中所有函数的参数都是按值传递的——《高程3》原话,之所以这里说俩种,是因为结合引用传参更容易理解)—— 。&
  值传参针对基本类型,引用传参针对引用类型,传参可以理解为复制变量值。基本类型复制后俩个变量完全独立,之后任何一方改变都不会影响另一方;引用类型复制的是引用(即指针),之后的任何一方改变都会映射到另一方。
  不少人对参数都是按值传递的感到困惑,因为访问变量有按值和按引用两种方式。下面就来看看有何不同:
  这一段很重要:我们可以把ECMAScript函数的参数想象成局部变量。在向参数传递基本类型的值时,被传递的值被复制给一个局部变量(即命名参数,或者用ECMAScript的概念来说,就是arguments对象中的一个元素)。在向参数传递引用类型时,会把这个值在内存中的地址(指针)复制给一个局部变量,因此这个局部变量的变化会反映在函数的外部。
  1、按值传递
<span style="color: # function addTen(num) {
<span style="color: #
num += 10;
<span style="color: #
<span style="color: # }
<span style="color: #
<span style="color: # var count = 20;
<span style="color: # var result = addTen(count);
//按值传递 num = count
<span style="color: # alert(count);
// 20, 没变化
<span style="color: # alert(result);
  很好理解,因为是按值传递的,传递完后俩个变量各不相干!
  2、按引用传递(这么叫便于理解,其实也是按值传递)
<span style="color: # function setName(obj) {
<span style="color: #
obj.name = "Nicholas";
<span style="color: # }
<span style="color: #
<span style="color: # var person = new Object();
<span style="color: # setName(person);
//相当于按值传递
obj = person
<span style="color: # alert(person.name);
// "Nicholas"
  当&var person = new Object();&时,可以用下图表示变量和对象的关系:
  当调用函数&setName(person);&时,下图可以表示全局变量person和局部变量obj的关心:
  以上代码中创建一个对象,并将其保存在变量person中。然后,这个变量被传递到setName(obj)函数中之后就被复制给了obj。在这个函数内部,obj和person引用的是同一个对象。换句话说,即使ECMAScript说这个变量时按值传递的,但obj也会按引用来访问同一个对象。于是,在函数内部为obj添加name属性后,函数外部的person也将有所反应;因为这时的person和obj指向同一个堆内存地址。所以,很多人错误的认为:在局部作用域中修改的对象会在全局对象中反映出来,就说明参数是按引用传递的。
  为了证明对象也是按值传递的,我们再来看看下面这个经过修改的例子:
<span style="color: # function setName(obj) {
<span style="color: #
obj.name = "Nicholas";
<span style="color: #
obj = new Object(); //改变obj的指向,此时obj指向一个新的内存地址,不再和person指向同一个
<span style="color: #
obj.name = "Greg";
<span style="color: # }
<span style="color: #
<span style="color: # var person = new Object();
<span style="color: # setName(person);
//你看看下面,相信我也是按值传递的了吧
<span style="color: # alert(person.name);
//"Nicholas"
  当创建obj对象&obj = new Object();&&时,来看看这时person和obj的关系图:
  这个例子与前一个唯一的区别,就是setName()函数中添加了两行代码:&obj = new Object();&用来改变obj的指向;&obj.name = "Greg";&用来给新创建的obj添加属性。如果是按引用传递的,那么person就会自动被修改为指向新创建的obj的内存地址,则person的name属性值被修改为"Greg"。但是,当访问person.name时,显示的结果为"Nicholas"。这说明即使在函数内部修改了参数的值,但原始的引用仍然保持未变。实际上,当在函数内部重写obj时,这个变量引用的就是一个局部对象了。而这个局部对象会在函数执行完毕后被立即销毁!
  有关函数的传递参数就说这么多吧,可以参考一下这篇文章,当课后检验做一下:。
  若发现错误之处,欢迎拍砖指针,感激不尽!
阅读(...) 评论()ECMAScript 中所有函数的参数都是按值传递的【javascript吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:162,611贴子:
ECMAScript 中所有函数的参数都是按值传递的收藏
ECMAScript 中所有函数的参数都是按值传递的,言下之意就是说,参数不会按引用传递,虽然变量有基本类型和引用类型之分。这句话困扰了我很久。var person = { name : &Tom&};function obj(peo){ peo.name = &Jerry&; }var result = obj(person);console.log(result.name);// Jerry console.log(person.name);// Jerry我没搞懂的是:console.log(person.name); 不应该打印出“Tom”吗?个人思路:按照JS中所有函数的参数都是按值传递的,当person被当做参数传递给obj时,实际上是在堆内存中又新建了一个与 person无关的对象。相当于此时外部有一个对象,函数内部也有一个对象。这两个对象应该毫无关联,那么函数内部对象属性改变过后,不应该影响到函数外部的对象,所以:console.log(person.name); 应该打印出“Tom”。麻烦高手帮忙指点指点,我的思路是那里错了? 谢谢!
千锋javascript,名企内部推荐就业,入学签订就业协议,2周免费试学!千锋javascript,20周快速成为高级开发工程师,就业“薪”踏板!
那个obj函数修改并返回peo。而peo实际指向的是people,类似于people的一个别名。
无关表现在进行如peo=null或其它值的赋值操作是不会影响到people的。(peo可以指向people也可以指向其它,修改peo内部的值会影响到被指向的people的值)
登录百度帐号js中innertext和value有什么区别_百度知道
js中innertext和value有什么区别
请详细说明一下innertext的用法,它是否可以做为一个数组存储多个值呢?当它只有一个值的时候与value的用法有什么区别,还有它有什么什么特殊的用法?谢谢
我有更好的答案
innertext是文本值啊,value是是元素的值。&html&&head&&script type=&text/javascript&&function show(obj){alert(obj.value);}function showD(obj){alert(obj.innerText);}&/script&&/head&&body&&div onclick=&showD(this)&&innerText&/div&&input type=&button& value=&value&onclick=&show(this)&&&/input&&/body&&/html&
高考志愿填报导师
innertext是文本值啊,value是是元素的值。&html&&head&&script type=&text/javascript&&function show(obj){alert(obj.value);}function showD(obj){alert(obj.innerText);}&/script&&/head&&body&&div onclick=&showD(this)&&innerText&/div&&input type=&button& value=&value&onclick=&show(this)&&&/input&&/body&&/html&他们是2个概念,你再看看。
本回答被网友采纳
innerText 是值 html标签中 被包含的值例如 &a id=&a1&&hello&/a&&script language=&javascript&&var a1 = document.getElementById(&a1&);alert(a1.innerHTML);&/script&结果就是
hello而 value 是html标记元素的属性...
比如 input 标签...~&input type=&text& value=&hello& id=&t1& /&那么 t1.value 就是 hello 了..
为您推荐:
其他类似问题
value的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。JavaScript 数据类型
JavaScript 数据类型
字符串、数字、布尔、数组、对象、Null、Undefined
JavaScript 拥有动态类型
JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型:
var x = 6;
var x = &Bill&;
JavaScript 字符串
字符串是存储字符(比如 &Bill Gates&)的变量。
字符串可以是引号中的任意文本。您可以使用单引号或双引号:
var carname=&Bill Gates&;
var carname='Bill Gates';
您可以在字符串中使用引号,只要不匹配包围字符串的引号即可:
var answer=&Nice to meet you!&;
var answer=&He is called 'Bill'&;
var answer='He is called &Bill&';
您将在本教程的高级部分学到更多关于字符串的知识。
JavaScript 数字
JavaScript 只有一种数字类型。数字可以带小数点,也可以不带:
var x1=34.00;
var x2=34;
极大或极小的数字可以通过科学(指数)计数法来书写:
var y=123e5;
var z=123e-5;
您将在本教程的高级部分学到更多关于数字的知识。
JavaScript 布尔
布尔(逻辑)只能有两个值:true 或 false。
var x=true
var y=false
布尔常用在条件测试中。您将在本教程稍后的章节中学到更多关于条件测试的知识。
JavaScript 数组
下面的代码创建名为 cars 的数组:
var cars=new Array();
cars[0]=&Audi&;
cars[1]=&BMW&;
cars[2]=&Volvo&;
或者 (condensed array):
var cars=new Array(&Audi&,&BMW&,&Volvo&);
或者 (literal array):
var cars=[&Audi&,&BMW&,&Volvo&];
数组下标是基于零的,所以第一个项目是 [0],第二个是 [1],以此类推。
您将在本教程稍后的章节中学到更多关于数组的知识。
JavaScript 对象
对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔:
var person={firstname:&Bill&, lastname:&Gates&, id:5566};
上面例子中的对象 (person) 有三个属性:firstname、lastname 以及 id。
空格和折行无关紧要。声明可横跨多行:
var person={
firstname : &Bill&,
: &Gates&,
对象属性有两种寻址方式:
name=person.
name=person[&lastname&];
您将在本教程稍后的章节中学到更多关于对象的知识。
Undefined 和 Null
Undefined 这个值表示变量不含有值。
可以通过将变量的值设置为 null 来清空变量。
声明变量类型
当您声明新变量时,可以使用关键词 &new& 来声明其类型:
var carname=new S
var person= new O
JavaScript 变量均为对象。当您声明一个变量时,就创建了一个新的对象。
JavaScript 高级教程:

我要回帖

更多关于 js的值和值的方法 的文章

 

随机推荐