1# 使用JSVM-API判断给定的两个JS value是否严格相等 2 3## 简介 4 5JSVM-API中用于判断给定的两个JavaScript值是否严格相等,类似于JavaScript中的===操作符。使用这个函数可以避免类型转换和松散相等性比较,确保两个值不仅在值上相等,而且在类型上也相等。 6 7## 基本概念 8 9比较两个JavaScript值是否严格相等。严格相等比较不会进行类型转换,它要求两个值的类型和值完全相同才会返回true。 10 11## 接口说明 12 13| 接口 | 功能说明 | 14|----------------------------|-------------------------------------| 15| OH_JSVM_StrictEquals | 判断两个JSVM_Value对象是否相等 | 16 17## 使用示例 18 19JSVM-API接口开发流程参考[使用JSVM-API实现JS与C/C++语言交互开发流程](use-jsvm-process.md),本文仅对接口对应C++相关代码进行展示。 20 21### OH_JSVM_StrictEquals 22 23判断给定的两个JS value是否严格相等。 24 25cpp部分代码 26 27```cpp 28// hello.cpp 29#include "napi/native_api.h" 30#include "ark_runtime/jsvm.h" 31#include <hilog/log.h> 32// OH_JSVM_StrictEquals的样例方法 33static JSVM_Value IsStrictEquals(JSVM_Env env, JSVM_CallbackInfo info) 34{ 35 // 接受两个入参 36 size_t argc = 2; 37 JSVM_Value args[2] = {nullptr}; 38 OH_JSVM_GetCbInfo(env, info, &argc, args, nullptr, nullptr); 39 // 调用OH_JSVM_StrictEquals接口判断给定的两个JavaScript value是否严格相等 40 bool result = false; 41 JSVM_Status status = OH_JSVM_StrictEquals(env, args[0], args[1], &result); 42 if (status != JSVM_OK) { 43 OH_LOG_ERROR(LOG_APP, "JSVM OH_JSVM_StrictEquals: failed"); 44 } else { 45 OH_LOG_INFO(LOG_APP, "JSVM OH_JSVM_StrictEquals: success: %{public}d", result); 46 } 47 JSVM_Value isStrictEqual; 48 OH_JSVM_GetBoolean(env, result, &isStrictEqual); 49 return isStrictEqual; 50} 51// IsStrictEquals注册回调 52static JSVM_CallbackStruct param[] = { 53 {.data = nullptr, .callback = IsStrictEquals}, 54}; 55static JSVM_CallbackStruct *method = param; 56// IsStrictEquals方法别名,供JS调用 57static JSVM_PropertyDescriptor descriptor[] = { 58 {"isStrictEquals", nullptr, method++, nullptr, nullptr, nullptr, JSVM_DEFAULT}, 59}; 60// 样例测试js 61const char* srcCallNative = R"JS(data = '123';value = '123';isStrictEquals(data,value);)JS"; 62``` 63 64预期的输出结果 65 66```ts 67JSVM OH_JSVM_StrictEquals: success: 1 68``` 69