当前位置:首页 > 日记 > 正文

js是按值传递或通过引用传递的。

js是按值传递或通过引用传递的。
通过值VS传递值并传递引用。
按值调用是最常用的求值策略:函数的参数是调用时传递的真实参数的副本。修改参数的值不影响参数。
当引用传递(通过引用调用)时,函数的参数会收到对参数的隐式引用,而不再是一个拷贝。这意味着如果函数参数的值被修改,参数也将被修改。同时,两个点的值相同。
通过引用使函数调用的跟踪更加困难,有时会导致一些细微的错误。
由于需要每次复制一个副本,对于一些复杂类型的性能很低,这两种传输值的方式都有各自的问题。
让我们看一个C的例子来理解值和引用之间的区别。
复制代码代码如下所示:

无效修改(int p,int * q)

{

p=27;通过值p是参数的副本,只有p被修改。

* q = 27; q是对b的引用,q和b被修改。

}

主()

{

int = 1;

int = 1;

修改(a,b);通过a传递值,b通过引用传递,

a未改变,b更改

返回(0);

}
在这里我们可以看到:
p通过值,改变p的参数值不影响参数a,p只是a的副本。

q是通过引用传递的,修改参数Q值也会影响B参数的值。

JS价值转移模式探讨

js的基本类型是按值传递的。

复制代码代码如下所示:

var a=1;

函数(x){

x=2;

}

富(A);

console.log(一); / / 1,x = 2是不是由分配的影响
再看一遍对象:
复制代码代码如下所示:

var obj = { x:1 };

函数富(o){

OX = 3;

}

foo(obj);

console.log(obj,x); / / 3,修订!
它表明,O和obj是相同的对象,而不是一个复制的对象。所以它不是值传递。但这并不表明JS对象是通过引用传递的吗让我们看下面的例子。

复制代码代码如下所示:

var obj = { x:1 };

函数富(o){

o=100;

}

foo(obj);

console.log(obj,x); / /仍然是1,目标没有改变100。
如果是通过引用传递的参数,这个值应该被修改,而应该是受到影响。但修改啊,这里的值不影响对象。所以在JS对象是通过引用传递。因此该对象的值是通过JS
通过共享来传递呼叫

准确地说,在JS的基本类型是按值传递的,而对象的类型是通过共享(呼叫通过分享,通过对象,也被对象共享)。它首先是由Barbara Liskov提出的。在1974葡萄糖的语言。评价策略是用于诸如Python、java、露比多种语言,js等。
这一战略的关键是,当调用函数传递引用,该函数接受一份来自对象参考参考,不是复制对象的值传递,也不是一个隐式引用的引用传递。它不同于参考参考:函数的参数传递的共享的值不会影响这个参数的值,如下面的例子,该对象的值不能通过修改参数的值修正O.

复制代码代码如下所示:

var obj = { x:1 };

函数富(o){

o=100;

}

foo(obj);

console.log(obj,x); / /仍然是1,目标没有改变100。
然而,尽管引用是副本,引用的对象是相同的,它们共享同一个对象,因此修改参数对象的属性值也会影响参数的属性值。

复制代码代码如下所示:

var obj = { x:1 };

函数富(o){

OX = 3;

}

foo(obj);

console.log(obj,x); / / 3,修订!
一个对象类型作为对象是可变的(mutable),修改对象本身影响借鉴和参考的共享对象的副本。对于基本类型,因为它们都是不可变的(不变的),是没有区别的共享传递和调用之间的价值,所以JS的基本类型,不仅适用于输送的价值,也为共享传递。
var a = 1; 1是数字类型,而不是B变量var = a;b = 6;

根据共享交付策略,a和b是两个不同的引用(b是a的参考副本),但引用相同的值。因为基本类型编号1在这里是不可变的,所以说值传递和共享没有区别。
基本类型的不可变属性

基本类型是不可变的(不可变的),只有对象是可变的(可变的)。例如,数值为100,布尔值为true,false,修改这些值(例如,1至3转,把真实的100)没有多大意义。什么是容易误解是串在JS。有时我们试图改变字符串的内容,但在JS,任何修饰,似乎是一个字符串值实际上是创建一个新字符串值。

复制代码代码如下所示:

varabc;

0;}

0;

仍然是ABC;赋值无效。无法修改字符串的内容。
对象是不同的,对象是可变的。
复制代码代码如下所示:

var obj = { x:1 };

obj。x = 100;

var o = obj;

OX = 1;

对象X; / / 1,改性

O =真;

对象X; / / 1,O =真的不会改变
可变对象定义在这里,值对象,和对象的值。X属性设置为100,然后我们定义一个变量,这仍然是对象。当时,对OBJ和O点两变量的值相同的对象(同一个对象的引用),所以修改对象的内容对OBJ和O.但对象不是通过引用传递的影响,和O O =真正的价值是通过修改不影响目标。

相关文章

用PS制作铅笔和铅笔画是铅笔画效果

用PS制作铅笔和铅笔画是铅笔画效果

铅笔画,效果图,电脑软件,PS,如何成功地吸引姐妹论文的注意只不过是画一幅铅笔画而已。现在流行的铅笔艺术效果是很多妹妹的论文都很令人满意,也是高杰格的表现。今天,萧边完成了图片和铅笔。 如何吸引姐妹论文的注意是画一笔,一句话:你在我心中…

PHP使用getdate得到当前的日期和时

PHP使用getdate得到当前的日期和时

数组,日期,时间,电脑软件,PHP,本文阐述了如何用PHP getdate得到当前的日期和时间作为关联数组。分享给你供你参考。具体分析如下: PHP getdate函数是用来获取当前的日期和时间,从一个操作系统或关联数组的一个UNIX风格的日期整数。 语法格…

ps是照片中的一个域图形,变成了梦幻

ps是照片中的一个域图形,变成了梦幻

片中,变成了,梦幻,域图,电脑软件,这篇文章主要介绍了ps字段中的人物在照片中变成梦光效果,教程也不复杂,喜欢的朋友可以一起学习。 后处理效果图: 1,打开原材料,按照Ctrl、J复制一层,执行,过滤模糊动态模糊数字图形,图层的透明度设置为50%,使我们首…

jQuery基本语法综述

jQuery基本语法综述

综述,基本语法,电脑软件,jQuery,1,$(文档)将文档对象转换为jQuery 复制代码代码如下所示: $(文档)Ready(函数(){) 警报(Hello World); }); 2、把所有的超链接对象和增加的onclick事件;事实上,每个标签的底层jQuery对象获得的数组,所以我们不需要回收。 …

PS只会产生漂亮的多边形效果。

PS只会产生漂亮的多边形效果。

多边形,只会,效果,漂亮,电脑软件,本教程是介绍给朋友的,利用PS制作漂亮的多边形文字效果的方法。教程生成的文本很漂亮,难度也不是很大。新手可以来学习一下,希望能帮到你。 本教程教朋友用PS制作漂亮的多边形效果教程,教程的效果很漂亮,制作起…

Flex的误差(MX。消息。消息::remoting

Flex的误差(MX。消息。消息::remoting

消息,误差,电脑软件,Flex,remotingmessage,首先查看异常信息: (MX。消息。消息::remotingmessage)# 0 身体=(阵列)# 1 clientId =(空) 目标 标题=(对象)# 2 messageId =9d7c932f-affa-26c1-f624-c1ea7b88db1b 操作=getallclasses 源=(空) 时间…

PHP将数据写入CSV文件的方式

PHP将数据写入CSV文件的方式

文件,数据,方式,电脑软件,PHP,本文演示PHP将数据写入CSV文件的方式: $行= 0; ini_set('max_execution_time ',300); 美元;美元;美元;美元; $ FP = fopen(torah1 CSV 。 如果(($处理= fopen(t.csv 而(($数据= fgetcsv(合处理,1000,))!= false){ $ =计数($ data); $…

包含方法的不区分大小写方法的jQue

包含方法的不区分大小写方法的jQue

方法,不区分大小写,电脑软件,jQuery,本文的示例介绍了jQuery在方法中不区分大小写和案例的方法,供大家参考,具体实现方法如下: 新的选择器 jquery表达式{ ':' }。包含=功能(A,I,M){ jQuery()返回的文本()ToUpperCase()。 。indexOf((M { 3 }。toUpperCase…

AI绘制时装沙发和美容商业插图

AI绘制时装沙发和美容商业插图

绘制,插图,时装,电脑软件,AI,本教程是向朋友介绍时尚沙发和美容商业插画的过程。它很时尚,很漂亮,很难创造。 我们经常可以看到美丽的插图矢量在杂志、网络等媒体,今天我们将学习如何使用Illustrator绘制沙发和美容业务的插图。作为一名导师,为…

PS图象处理软件带来了美丽的春天的

PS图象处理软件带来了美丽的春天的

带来了,图象,处理软件,春天,美丽,材料图片的色差很大,不够软,当主色调为黄绿色时,则主色是淡的,然后深色的曲线越亮,画面就越软。 材料图片的色差很大,不够软,当主色调为黄绿色时,则主色是淡的,然后深色的曲线越亮,画面就越软。 原 最终效果 1、打…

PS做鹿的课程。

PS做鹿的课程。

课程,电脑软件,PS,本教程是介绍给一个朋友,谁使用PS使鹿的方式。教程不是很详细,但是教程很好,而且也不是很难。推荐。让我们一起学习。 PS做鹿的课程。 影响 制作步骤: 本教程结束,以上是ps制作鹿道教程,希望大家喜欢!…

中继器如何实现多行分隔显示分隔符

中继器如何实现多行分隔显示分隔符

显示,分隔符,中继器,如何实现,电脑软件,复制代码代码如下所示: protected void page_load(object sender,EventArgs e) { 如果(!页面的IsPostBack)。 { rptlist.datasource =获取(); RptList.DataBind(); } } protected void rptlist_itemdatabound(objec…