数码资讯
javascript分配机制的详细解决方案
今天,我回答了一个关于Javascript的问题,它涉及分配问题,所以我想对这个问题做一个很好的总结。 复制代码代码如下所示: 创建一个测试; Var(b =函数){ }; B =测试; 函数变化(m,n){ M =‘变'; n. =‘变'; } 改变(A,B); 当执行上述代码时变量A和B的值会发
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
今天,我回答了一个关于Javascript的问题,它涉及分配问题,所以我想对这个问题做一个很好的总结。
复制代码代码如下所示:
创建一个测试;
Var(b =函数){ };
B =测试;
函数变化(m,n){
M =‘变';
n. =‘变';
}
改变(A,B);
当执行上述代码时变量A和B的值会发生变化吗
原始值和参考值
在前面的文章中,引入了原始值和引用值。原始值是指未定义的、空的、布尔的、数字的、字符串等。它们存储在堆栈中,而引用值是从对象中集成的,这些值存储在堆中。
这是两者之间的明显区别:
复制代码代码如下所示:
创建一个测试;
var b =新的字符串(测试);
创建一个真实的;
var b =新的布尔(真实的);
上述四个变量a和a是原始值,而b和b是引用值。
分配机制
在了解了原始值和引用值之间的差异之后,您可以对Javascript的分配机制进行具体介绍。
在Javascript中,对于原始值类型的每个变量,每个赋值都将生成一个副本,并且作为参考值,因为它的名称是,它通过引用赋值来引用同一个存储对象的内存。
原始价值的转让:
复制代码代码如下所示:
var a = 1; /原始值
变量a
B = 2;与a无关。
警报(a);输出1
参考值的赋值:
复制代码代码如下所示:
var =新的(对象);引用值
内= 1;
指向相同的内存。
b.x = 2; / /修改B的影响
警报(内); / /输出2
参数传递
现在让我们看看两种类型的值是如何传递给函数的函数的。
1。传递原始值
复制代码代码如下所示:
var a=1;
函数测试(m){
m=2;
}
测试(a);
警报(a);输出1
输出是1,所以我们知道函数只传递变量的值,所以函数体中m的值得到1,然后分配给2,不影响外部变量a。
2。转移的参考价值
复制代码代码如下所示:
var =新对象();
内= 1
函数测试(m){
m.x = 2;
}
测试(a);
警报(内); / /输出2
输出是2,所以我们知道函数将变量的地址传递给它,所以函数体中的m得到地址,所以属性x被赋值给2,这也会影响指向同一内存地址的指针。
总结
现在回到问题的开始:
复制代码代码如下所示:
创建一个测试;
Var(b =函数){ };
B =测试;
函数变化(m,n){
M =‘变';
n. =‘变';
}
改变(A,B);
变量a是原始值,变量b是参考值。传递函数的值在体内。一个是地址,所以变量a在函数运行后不会改变,变量B的值会改变。
复制代码代码如下所示:
创建一个测试;
Var(b =函数){ };
B =测试;
函数变化(m,n){
M =‘变';
n. =‘变';
}
改变(A,B);
当执行上述代码时变量A和B的值会发生变化吗
原始值和参考值
在前面的文章中,引入了原始值和引用值。原始值是指未定义的、空的、布尔的、数字的、字符串等。它们存储在堆栈中,而引用值是从对象中集成的,这些值存储在堆中。
这是两者之间的明显区别:
复制代码代码如下所示:
创建一个测试;
var b =新的字符串(测试);
创建一个真实的;
var b =新的布尔(真实的);
上述四个变量a和a是原始值,而b和b是引用值。
分配机制
在了解了原始值和引用值之间的差异之后,您可以对Javascript的分配机制进行具体介绍。
在Javascript中,对于原始值类型的每个变量,每个赋值都将生成一个副本,并且作为参考值,因为它的名称是,它通过引用赋值来引用同一个存储对象的内存。
原始价值的转让:
复制代码代码如下所示:
var a = 1; /原始值
变量a
B = 2;与a无关。
警报(a);输出1
参考值的赋值:
复制代码代码如下所示:
var =新的(对象);引用值
内= 1;
指向相同的内存。
b.x = 2; / /修改B的影响
警报(内); / /输出2
参数传递
现在让我们看看两种类型的值是如何传递给函数的函数的。
1。传递原始值
复制代码代码如下所示:
var a=1;
函数测试(m){
m=2;
}
测试(a);
警报(a);输出1
输出是1,所以我们知道函数只传递变量的值,所以函数体中m的值得到1,然后分配给2,不影响外部变量a。
2。转移的参考价值
复制代码代码如下所示:
var =新对象();
内= 1
函数测试(m){
m.x = 2;
}
测试(a);
警报(内); / /输出2
输出是2,所以我们知道函数将变量的地址传递给它,所以函数体中的m得到地址,所以属性x被赋值给2,这也会影响指向同一内存地址的指针。
总结
现在回到问题的开始:
复制代码代码如下所示:
创建一个测试;
Var(b =函数){ };
B =测试;
函数变化(m,n){
M =‘变';
n. =‘变';
}
改变(A,B);
变量a是原始值,变量b是参考值。传递函数的值在体内。一个是地址,所以变量a在函数运行后不会改变,变量B的值会改变。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。