1e41f4b71Sopenharmony_ci# Comparing JS Values Using JSVM-API 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci## Introduction 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ciThis topic walks you through on how to use JSVM-API to check whether two JavaScript (JS) values are strictly equal (equal in both value and type). The API provided is equivalent to the JS strict equality operator (===). 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ci## Basic Concepts 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ciStrictly equal: If two values are strictly equal, they are equal in both value and type. When type conversion is considered, if the values being compared are of different types, **false** will be returned even if the values are the same. 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci## Available APIs 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci| API | Description | 14e41f4b71Sopenharmony_ci|----------------------------|-------------------------------------| 15e41f4b71Sopenharmony_ci| OH_JSVM_StrictEquals | Checks whether two **JSVM_Value** objects are strictly equal. | 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ci## Example 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ciIf you are just starting out with JSVM-API, see [JSVM-API Development Process](use-jsvm-process.md). The following demonstrates only the C++ and ArkTS code related to the comparison. 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci### OH_JSVM_StrictEquals 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ciUse **OH_JSVM_StrictEquals** to check whether two JS values are strictly equal. 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ciCPP code: 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ci```cpp 28e41f4b71Sopenharmony_ci// hello.cpp 29e41f4b71Sopenharmony_ci#include "napi/native_api.h" 30e41f4b71Sopenharmony_ci#include "ark_runtime/jsvm.h" 31e41f4b71Sopenharmony_ci#include <hilog/log.h> 32e41f4b71Sopenharmony_ci// Register the IsStrictEquals callback. 33e41f4b71Sopenharmony_cistatic JSVM_CallbackStruct param[] = { 34e41f4b71Sopenharmony_ci {.data = nullptr, .callback = IsStrictEquals}, 35e41f4b71Sopenharmony_ci}; 36e41f4b71Sopenharmony_cistatic JSVM_CallbackStruct *method = param; 37e41f4b71Sopenharmony_ci// Set a property descriptor named isStrictEquals and associate it with a callback. This allows the isStrictEquals callback to be called from JS. 38e41f4b71Sopenharmony_cistatic JSVM_PropertyDescriptor descriptor[] = { 39e41f4b71Sopenharmony_ci {"isStrictEquals", nullptr, method++, nullptr, nullptr, nullptr, JSVM_DEFAULT}, 40e41f4b71Sopenharmony_ci}; 41e41f4b71Sopenharmony_ci// Define OH_JSVM_StrictEquals. 42e41f4b71Sopenharmony_cistatic JSVM_Value IsStrictEquals(JSVM_Env env, JSVM_CallbackInfo info) 43e41f4b71Sopenharmony_ci{ 44e41f4b71Sopenharmony_ci // Obtain the input parameters. 45e41f4b71Sopenharmony_ci size_t argc = 2; 46e41f4b71Sopenharmony_ci JSVM_Value args[2] = {nullptr}; 47e41f4b71Sopenharmony_ci OH_JSVM_GetCbInfo(env, info, &argc, args, nullptr, nullptr); 48e41f4b71Sopenharmony_ci // Call OH_JSVM_StrictEquals to check whether two given JS values are strictly equal. 49e41f4b71Sopenharmony_ci bool result = false; 50e41f4b71Sopenharmony_ci JSVM_Status status = OH_JSVM_StrictEquals(env, args[0], args[1], &result); 51e41f4b71Sopenharmony_ci if (status != JSVM_OK) { 52e41f4b71Sopenharmony_ci OH_LOG_ERROR(LOG_APP, "JSVM OH_JSVM_StrictEquals: failed"); 53e41f4b71Sopenharmony_ci } else { 54e41f4b71Sopenharmony_ci OH_LOG_INFO(LOG_APP, "JSVM OH_JSVM_StrictEquals: success: %{public}d", result); 55e41f4b71Sopenharmony_ci } 56e41f4b71Sopenharmony_ci JSVM_Value isStrictEqual; 57e41f4b71Sopenharmony_ci OH_JSVM_GetBoolean(env, result, &isStrictEqual); 58e41f4b71Sopenharmony_ci return isStrictEqual; 59e41f4b71Sopenharmony_ci} 60e41f4b71Sopenharmony_ci``` 61e41f4b71Sopenharmony_ci 62e41f4b71Sopenharmony_ciArkTS code: 63e41f4b71Sopenharmony_ci 64e41f4b71Sopenharmony_ci```ts 65e41f4b71Sopenharmony_cilet script: string = ` 66e41f4b71Sopenharmony_ci let data = '123'; 67e41f4b71Sopenharmony_ci let value = 123; 68e41f4b71Sopenharmony_ci isStrictEquals(data,value); 69e41f4b71Sopenharmony_ci`; 70e41f4b71Sopenharmony_citry { 71e41f4b71Sopenharmony_ci let result = napitest.runJsVm(script); 72e41f4b71Sopenharmony_ci hilog.info(0x0000, 'JSVM', 'isStrictEquals: %{public}s', result); 73e41f4b71Sopenharmony_ci} catch (error) { 74e41f4b71Sopenharmony_ci hilog.error(0x0000, 'JSVM', 'isStrictEquals: %{public}s', error.message); 75e41f4b71Sopenharmony_ci} 76e41f4b71Sopenharmony_ci``` 77