JS语言理解16 函数参数的传值调用方式

本文探讨JavaScript中函数参数的传递方式,重点解释基本类型和引用类型的传值调用与传共享调用的区别。通过实例分析,得出结论:JavaScript中,基本类型参数按值传递,引用类型参数按共享传递,即传递对象引用的拷贝。
摘要由CSDN通过智能技术生成

学习了JavaScript 是传值调用还是传引用调用?@nodejh/nodejh.github.io的文章,了解了函数参数的传值调用方式,基本类型是传值调用,引用类型是传共享调用

函数参数的传递方式

一般来说有三种参数传递方式:

(1)传值调用

传值调用时,来传递给函数参数时函数被调用时所传实参的拷贝,其值会被绑定到函数对应的变量上(通常是把值复制到新内存区域)。

(2)传引用调用

传引用调用是,传递给函数的是它的实际参数的隐式引用而不是实参的拷贝。函数能够修改这些参数,而且改变时对调用者可见的。

(3)传共享调用

传共享调用和传引用调用的不同之处是,这种方式传递给函数参数的是对象引用的拷贝,即对象变量指针的拷贝

JavaScript中采用的是哪种传值调用方式呢?先给出结论:

基本类型是传值调用,引用类型是传共享调用

这与《JavaScript高级程序设计》中的结论是JavaScript参数传递是不矛盾的,因为传值调用本质上传递的是变量的值的拷贝,而传共享调用本质上是传递对象的指针的拷贝,指针也是变量的值,所以传共享调用也可以说是传值调用

具体如何理解呢,先看一个例子

如何理解

<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js 可以通过 C++ 模块来扩展其功能,实现 C++ 模块函数的调用需要使用 Node.js 提供的 `N-API` 接口。下面是一个简单的例子,演示了如何在 C++ 模块中实现一个函数,并在 Node.js调用该函数并传递参数。 C++ 模块代码: ```cpp #include <node_api.h> napi_value add(napi_env env, napi_callback_info info) { size_t argc = 2; napi_value args[2]; napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); int32_t a, b; napi_get_value_int32(env, args[0], &a); napi_get_value_int32(env, args[1], &b); napi_value result; napi_create_int32(env, a + b, &result); return result; } napi_value Init(napi_env env, napi_value exports) { napi_value fn; napi_create_function(env, nullptr, 0, add, nullptr, &fn); napi_set_named_property(env, exports, "add", fn); return exports; } NAPI_MODULE(NODE_GYP_MODULE_NAME, Init) ``` 上述代码定义了一个 `add` 函数,该函数接受两个整数参数,返回它们的和。然后将该函数导出为 Node.js 模块的一个属性。 在 Node.js调用该函数: ```javascript const addon = require('./build/Release/addon'); console.log(addon.add(1, 2)); // 3 ``` 上述代码首先通过 `require` 函数引入了 C++ 模块,然后调用了模块的 `add` 函数,并传入两个整数参数。`add` 函数返回它们的和,该和被输出到控制台上。 这是一个简单的例子,演示了如何在 C++ 模块中实现函数,并在 Node.js调用该函数并传递参数。具体实现方式可以根据实际情况来进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值