JSEngine

JSEngine
JavaScript engine for Delphi.
  • uses Microsoft ChakraCore JavaScript engine
  • supports Windows 32 and Windows 64
  • available for Delphi 6 - 10.1 and Lazarus
  • source code included in full version
  • distributing library in applications is royalty free

Download and order

Order JSEngine license $60,- USD (license for one developer)
Order JSEngine multilicense $180,- USD (license for all developers in company)
Order JSEngine year upgrades $30,- USD (registered users only)
Order JSEngine year upgrades multilicense $90,- USD (registered multilicense users only)

FAQ

How can I use WebAssembly?
Use raExperimentalFeatures attribute:
Engine := TJsEngine.Create([raExperimentalFeatures]);

Examples

ECMAScript 2015 (ES6) examples

// block
{
  const a = 1 // block-scoped constant
  let b = 2 // block-scoped variable
}

// template literals
function complexToString(a, b) {
  return `${a} + ${b}i`
}
complexToString(1, 2)

// multi-line strings
let html = `
  <div>
  Hello
  </div>`


// destructing assignment
const [a, , c] = [1, 2, 3, 4]
const {a, c} = {a: 1, b: 2, c: 3, d: 4}

// class
class Person {
  constructor(name) {
    this.name = name
  }

  hello() {
    return 'Hello, ' + this.name + '!'
  }
}

const erik = new Person('Erik')
erik.name
erik.hello()

// inheritance
class Student extends Person {
  hello() {
    return 'Hello, student ' + this.name + '!'
  }
}

const patrik = new Student('Patrik')
patrik.hello()

// arrow functions
[1, 2, 3].map(value => value + 1)

const increment = value => value + 1
increment(1)

// for of
let sum = 0
for (const element of [1, 2, 3])
  sum += element

// default parameters
function hello(name = 'Erik') {
  return 'Hello, ' + name + '!'
}

// rest parameters
function restParams(first, ...rest) {
  return rest
}

// spread operator
Math.max(1, 2, 3)
Math.max(...[1, 2, 3])

const a = [1, 2, 3]
const b = [4, 5, 6]
const c = [...a, ...b]


ECMAScript 2016 examples

2 ** 3 // exponentiation operator

ECMAScript 2017 examples

Object.values({a: 1, b: 2});
Object.entries({a: 1, b: 2});


Related links