Check out v4 of the Fauna CLI

v4 of the Fauna CLI is now in beta.

The new version introduces enhancements to the developer experience, including an improved authentication workflow. To get started, check out the CLI v4 quick start.

Blocks and lexical scoping

Blocks

A block is an expression that encapsulates one or more statements or expressions, and is enclosed by { }:

{
    let a = 1
    let b = 2
    a + b
}
3

The last statement in a block must be an expression.

A block is itself an expression, and has the type and result of the last expression of the block:

let x = {
    let a = 1
    let b = 2
    a + b
}
x
3

Scope

A block defines variable scope. Variables declared in a block are scoped to the block and can’t be referenced outside of the block.

let x = "foo"
let y = {
  let x = "bar"
  x
}
[x, y]
[
  "foo",
  "bar"
]

In the example, two x variables are declared. One with local scope and one with global scope. Variable y has global scope and is the value of the block.

Is this article helpful? 

Tell Fauna how the article can be improved:
Visit Fauna's forums or email docs@fauna.com

Thank you for your feedback!