MCPcopy Create free account
hub / github.com/Tracktion/choc / demonstrateBasicJavaScript

Function demonstrateBasicJavaScript

examples/javascript_integration.cpp:10–52  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

8#include "../choc/javascript/choc_javascript_QuickJS.h"
9
10void demonstrateBasicJavaScript()
11{
12 std::cout << "\n=== Basic JavaScript Execution Demo ===\n";
13
14 try
15 {
16 // Create a QuickJS context
17 auto context = choc::javascript::createQuickJSContext();
18
19 // Execute simple JavaScript expressions
20 auto result1 = context.evaluateExpression ("2 + 3");
21 std::cout << "2 + 3 = " << result1.getWithDefault<int>(0) << "\n";
22
23 auto result2 = context.evaluateExpression ("Math.sqrt (16)");
24 std::cout << "Math.sqrt (16) = " << result2.getWithDefault<double>(0.0) << "\n";
25
26 auto result3 = context.evaluateExpression ("'Hello, ' + 'World!'");
27 std::cout << "String concatenation: " << result3.toString() << "\n";
28
29 // Execute more complex JavaScript
30 auto result4 = context.evaluateExpression (R"(
31 (function() {
32 function factorial (n) {
33 if (n <= 1) return 1;
34 return n * factorial (n - 1);
35 }
36 return factorial (5);
37 })()
38 )");
39 std::cout << "factorial (5) = " << result4.getWithDefault<int>(0) << "\n";
40
41 // Work with JavaScript objects
42 context.evaluateExpression ("var person = { name: 'John', age: 30, city: 'New York' };");
43 auto name = context.evaluateExpression ("person.name");
44 auto age = context.evaluateExpression ("person.age");
45 std::cout << "Person: " << name.toString()
46 << ", age " << age.getWithDefault<int>(0) << "\n";
47 }
48 catch (const choc::javascript::Error& e)
49 {
50 std::cout << "JavaScript Error: " << e.what() << "\n";
51 }
52}
53
54void demonstrateNativeFunctionBinding()
55{

Callers 1

mainFunction · 0.85

Calls 3

whatMethod · 0.80
evaluateExpressionMethod · 0.45
toStringMethod · 0.45

Tested by

no test coverage detected