Skip to content
Alexander Nemish edited this page Aug 7, 2013 · 12 revisions

Simple operations:

val a = 12
val b = -a + 3
val c = b == 9

translates to

var a = 12
var b = -a + 3
var c = b == 9

if and match expressions

In Scala if and match are expressions when in javascript those are statements. JScala correctly translates if/match expressions to Javascript statements in case of val/var definitions:

val a = 5
val b = if (a > 2) 1 else 2
val c = b match {
  case 1 => true
  case _ => false
}

translates to

var a = 5;;
var b;
if (a > 2) b = 1; else b = 2;
var c;
switch(b) {
  case 1: c = true; break;
  default: c = false; break;
}

Array definition

Scala Array and all Seq factories are translated into Javascript array literals:

val a = Array(1, 2)
val b = JArray(1, 2)
val c = Seq(1, 2)
val d = ArrayBuffer(1, 2)
d(0) = a(1)
b.push(c.length)

translates to

var a = [1, 2];
var b = [1, 2];
var c = [1, 2];
var d = [1, 2];
d[0] = a[1];
b.push(c.length);

Class JArray implements Javascript Array interface.

Object definition

Scala anonymous classes that extend AnyRef are translated into Javascript objects:

val a = new {
  val filed = 1
  def foo(n: String) = parseInt(n)
}

translates to

var a = { 
  field : 1,
  foo: function(n) {
    return parseInt(n);
  }
}
Clone this wiki locally