RAGS - v1.10.0
    Preparing search index...

    If you don't know any JavaScript, this is a quick 5 minute course explaining most things you will need to understand.

    If you need a more in depth explanation you can look up anything on developer.mozilla.org, everything except for the dom will apply to gjs.

    Semicolons are optional, as there is automatic semicolon insertions

    // in gjs and other runtimes
    console.log("hello");

    // in gjs
    print("hello");

    To define a variable use the let or const keyword

    let someString = "some-string";
    let someNumber = 69;
    let someBool = true;

    const array = ["string", 69, true];

    const object = {
    key: "value",
    "key-word": "value",
    };

    if else

    let i = 0;
    if (i < 0) {
    print("its negative");
    } else if (i > 0) {
    print("its more than 0");
    } else {
    print("its 0");
    }

    while loop

    let i = 0;
    while (i < 5) {
    print(i);
    i++;
    }

    for loop

    for (let i = 0; i < 5; i++) {
    print(i);
    }

    for of loop

    const array = [0, 1, 2, 3, 4];
    for (const item of array) {
    print(item);
    }

    There are multiple ways to define functions, with the function keyword or with fat arrow functions, also know as lambda functions in other languages

    named function

    function fn(param1, param2) {
    print(param1, param2);
    }

    nameless function assigned to a const variable

    const fn = function (param1, param2) {
    print(param1, param2);
    };

    fat arrow function a.k.a lambda

    const fn = (param1, param2) => {
    print(param1, param2);
    };

    invoke all of them like any other function

    fn("hi", "mom");
    

    default parameter value

    function fn(param1, param2 = "hello") {
    print(param1, param2);
    }

    fn(); // undefined, hello

    arrays

    const array = [1, 2, 3, 4, 5];
    const [elem1, elem2, ...rest] = array;
    print(elem1, elem2, rest); // 1, 2, [3, 4, 5]

    objects

    const object = { one: 1, two: 2, three: 3, four: 4 };
    const { one, two, ...rest } = object;
    print(one, two, rest); // 1, 2, {three: 3, four: 4}

    useful in function definitions

    function fn({ one, two }) {
    print(one, two);
    }

    fn({ one: "hello", two: "mom" }); // hello, mom
    fn(); // throws error because undefined can't be destructed

    exporting

    export default "hello";
    export const string = "mom";
    export function fn(...params) {
    print(...params);
    }

    importing

    import hi, { fn, string } from "./path-to-file.js";
    fn(hi, string); // hello, mom

    use backticks and ${}

    const string = "mom";
    const formatted = `hi ${string}`;
    print(formatted); // hi mom