# 使用JSVM-API判æ–给定的两个JS value是å¦ä¸¥æ ¼ç›¸ç‰ ## 简介 JSVM-APIä¸ç”¨äºŽåˆ¤æ–给定的两个JavaScript值是å¦ä¸¥æ ¼ç›¸ç‰ï¼Œç±»ä¼¼äºŽJavaScriptä¸çš„===æ“作符。使用这个函数å¯ä»¥é¿å…类型转æ¢å’Œæ¾æ•£ç›¸ç‰æ€§æ¯”较,确ä¿ä¸¤ä¸ªå€¼ä¸ä»…在值上相ç‰ï¼Œè€Œä¸”在类型上也相ç‰ã€‚ ## 基本概念 比较两个JavaScript值是å¦ä¸¥æ ¼ç›¸ç‰ã€‚ä¸¥æ ¼ç›¸ç‰æ¯”较ä¸ä¼šè¿›è¡Œç±»åž‹è½¬æ¢ï¼Œå®ƒè¦æ±‚ä¸¤ä¸ªå€¼çš„ç±»åž‹å’Œå€¼å®Œå…¨ç›¸åŒæ‰ä¼šè¿”回true。 ## 接å£è¯´æ˜Ž | æŽ¥å£ | 功能说明 | |----------------------------|-------------------------------------| | OH_JSVM_StrictEquals | 判æ–两个JSVM_Value对象是å¦ç›¸ç‰ | ## 使用示例 JSVM-API接å£å¼€å‘æµç¨‹å‚考[使用JSVM-API实现JS与C/C++è¯è¨€äº¤äº’开呿µç¨‹](use-jsvm-process.md),本文仅对接å£å¯¹åº”C++相关代ç 进行展示。 ### OH_JSVM_StrictEquals 判æ–给定的两个JS value是å¦ä¸¥æ ¼ç›¸ç‰ã€‚ cpp部分代ç ```cpp // hello.cpp #include "napi/native_api.h" #include "ark_runtime/jsvm.h" #include <hilog/log.h> // OH_JSVM_StrictEqualsçš„æ ·ä¾‹æ–¹æ³• static JSVM_Value IsStrictEquals(JSVM_Env env, JSVM_CallbackInfo info) { // 接å—ä¸¤ä¸ªå…¥å‚ size_t argc = 2; JSVM_Value args[2] = {nullptr}; OH_JSVM_GetCbInfo(env, info, &argc, args, nullptr, nullptr); // 调用OH_JSVM_StrictEquals接å£åˆ¤æ–给定的两个JavaScript value是å¦ä¸¥æ ¼ç›¸ç‰ bool result = false; JSVM_Status status = OH_JSVM_StrictEquals(env, args[0], args[1], &result); if (status != JSVM_OK) { OH_LOG_ERROR(LOG_APP, "JSVM OH_JSVM_StrictEquals: failed"); } else { OH_LOG_INFO(LOG_APP, "JSVM OH_JSVM_StrictEquals: success: %{public}d", result); } JSVM_Value isStrictEqual; OH_JSVM_GetBoolean(env, result, &isStrictEqual); return isStrictEqual; } // IsStrictEquals注册回调 static JSVM_CallbackStruct param[] = { {.data = nullptr, .callback = IsStrictEquals}, }; static JSVM_CallbackStruct *method = param; // IsStrictEquals方法别å,供JS调用 static JSVM_PropertyDescriptor descriptor[] = { {"isStrictEquals", nullptr, method++, nullptr, nullptr, nullptr, JSVM_DEFAULT}, }; // æ ·ä¾‹æµ‹è¯•js const char* srcCallNative = R"JS(data = '123';value = '123';isStrictEquals(data,value);)JS"; ``` 预期的输出结果 ```ts JSVM OH_JSVM_StrictEquals: success: 1 ```