JavaScript 中的基元
编程语言中最简单的元素称为原语。
它们因语言而异,但通常是最基本的不可变值。
以下 JavaScript 原始数据类型按值传递:字符串、布尔值、数字、空值、未定义。
原语按其值复制意味着通过其值访问该变量。
原语是不可变的,这意味着它们的值不能改变但可以重新分配。
引用类型(对象)
JavaScript 中的对象属于引用类型。
与基元不同,参考值的大小是动态的;因此,JavaScript 将引用值存储在堆上。
对象是可以引用任何数据类型的属性集合,包括对象和原始值。
我们可以使用带有属性列表的图形括号 {...} 创建对象。
通常,对象几乎贯穿 JavaScript 的任何方面。
因此,它是首先要学习的东西之一。
按值传递
在按值传递中,可以通过直接将变量的值作为参数传递来调用函数。
如果在函数内部更改参数,则不会影响从函数外部传递的变量。
由于 JavaScript 始终是按值传递,因此更改变量的值不会更改底层原语(数字或者字符串)。
让我们在下面的示例中演示它:
function callByValue(var1, var2) { console.log("Inside Call"); var1 = 10; var2 = 20; console.log("var1 =" + var1 + " var2 =" + var2); } let var1 = 100; let var2 = 200; console.log("Before Call"); console.log("var1 =" + var1 + " var2 =" + var2); callByValue(var1, var2); console.log("After Call"); console.log("var1 =" + var1 + " var2 =" + var2);
输出如下:
Before Call by Value Method var1 =100 var2 =200 Inside Call by Value Method var1 =10 var2 =20 After Call by Value Method var1 =100 var2 =200
但如果变量引用包含数组的对象,则该值是对该对象的引用。
按值传递是一种更安全的编程方式,它可以防止程序员覆盖函数内部的变量。
JavaScript 和其他现代编程语言在涉及原语时使用它。
在这篇文章中,我们将研究 JavaScript 中的引用传递和值传递。
JavaScript 被认为是按值传递的语言,但是当变量引用一个对象时,该值成为该对象的引用。
现在,让我们看看什么是值传递和引用传递。
按引用传递
在传递引用中,可以通过直接传递变量的引用/地址作为参数来调用函数。
如果在函数内部更改参数,则会影响从函数外部传递的变量。
在 JavaScript 中,对象和数组是通过引用传递的。
下面是一个例子:
function callByReference(obj) { console.log("Inside Call by Reference"); obj.a = 100; console.log(obj); } let obj = { a: 1 }; console.log("Before Call by Reference"); console.log(obj); callByReference(obj); console.log("After Call by Reference"); console.log(obj);
输出将是:
Before Call by Reference Method {a: 1} Inside Call by Reference Method {a: 100} After Call by Reference Method {a: 100}