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