Sample code for 30+ languages & platforms
Dart Requires Chilkat v11.4.0+

Call a JavaScript Function Returning an Integer

See more JavaScript Examples

Demonstrates how to call a JavaScript function that returns an integer.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // ----------------------------------------------------------------------------------
  // The Javascript function called in this example is shown at the bottom of this page.
  // -----------------------------------------------------------------------------------

  // In this example, we'll load the Javascript function definition from a file.
  // It doesn't need to come from a file.  It could just as easily be loaded from a string.
  final sbScript = CkStringBuilder();
  try {
    sbScript.loadFile('js_call_function.js', 'utf-8');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Note: Each instance of a Chilkat Js object automatically establishes
  // its own internal runtime and context.  Applications do not need to explicitly create
  // the JavaScript runtime or context.
  final js = CkJs();

  final result = CkJsonObject();
  result.emitCompact = false;

  // Call Eval to add the function (shown at the bottom of this page) to the context's global object
  try {
    js.eval(sbScript, result);
  } on ChilkatException catch (e) {
    // Examine the result for an exception.
    print(result.emit());

    // Also examine the LastErrorText.
    print(e.lastErrorText);
    return;
  }

  print(result.emit());

  // The expected output is "undefined":

  // {
  //   "type": "undefined",
  //   "value": "undefined"
  // }

  //    When Eval processes a script containing only a function declaration,
  //    it successfully performs the action (the function becomes defined).
  //    However, since the script consists of a statement that produces no value,
  //    the script's overall completion value is empty. In JavaScript, the
  //    absence of a value is represented by `undefined`.
  // 
  //    Therefore, the Eval call returns `undefined`.

  // ------------------------------------------------------------------------------
  // Call the function calculateScore("Player1", 10, 20)

  final funcCall = CkJsonObject();

  // Create JSON defining the function call:

  // {
  //   "name": "calculateScore",
  //   "args": [ "Player1", 10, 20 ]
  // }

  funcCall.updateString('name', 'calculateScore');
  funcCall.updateString('args[0]', 'Player1');
  funcCall.updateInt('args[1]', 10);
  funcCall.updateInt('args[2]', 20);

  funcCall.emitCompact = false;
  print(funcCall.emit());

  try {
    js.callFunction(funcCall, result);
  } on ChilkatException catch (e) {
    // Examine the result for an exception.
    print(result.emit());

    // Also examine the LastErrorText.
    print(e.lastErrorText);
    return;
  }

  print(result.emit());

  // Output:

  // {
  //   "type": "int",
  //   "value": 37
  // }

  final retval = result.intOf('value');
  print('retval = $retval');
}
JavaScript
function calculateScore(name, pointsA, pointsB) {
    // Return length of name + both scores
    return name.length + pointsA + pointsB;
    }