Has a bit of a 8-bit Game Boy Color vibe to it. You can create games, and try some examples, in this online playground.
Charles Cailleteau
Please open Telegram to view this post
    VIEW IN TELEGRAM
  β€8π€5π1π₯1π€©1
  CHALLENGE
function process(data) {
  try {
    if (!data) {
      throw new TypeError('No data provided');
    }
    
    if (Array.isArray(data)) {
      return data.map(item => item * 2);
    }
    
    if (typeof data === 'object') {
      return Object.keys(data);
    }
    
    return data.toString();
  } catch (error) {
    if (error instanceof TypeError) {
      return 'Type error occurred';
    }
    return 'Unknown error';
  }
}
console.log(process(null));π8β€4π₯3
  What is the output?
  Anonymous Quiz
    25%
    null
      
    32%
    TypeError: Cannot read properties of null (reading 'toString')
      
    34%
    Type error occurred
      
    8%
    Unknown error
      
    β€2π€£2
  CHALLENGE
function Animal(name) {
  this.name = name;
}
Animal.prototype.speak = function() {
  return `${this.name} makes a noise.`;
};
function Dog(name) {
  Animal.call(this, name);
}
Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;
Dog.prototype.speak = function() {
  return `${this.name} barks.`;
};
const animal = new Animal('Rover');
const dog = new Dog('Rex');
console.log(dog instanceof Animal, dog.speak(), animal.speak(), Dog.prototype.isPrototypeOf(dog));β€7π1π₯1
  What is the output?
  Anonymous Quiz
    35%
    true 'Rex barks.' 'Rover makes a noise.' true
      
    34%
    false 'Rex barks.' 'Rover makes a noise.' true
      
    23%
    true 'Rex makes a noise.' 'Rover makes a noise.' true
      
    9%
    true 'Rex barks.' 'Rover makes a noise.' false
      
    π5β€3π€©3π₯2
  CHALLENGE
function highlight(strings, ...values) {
  return strings.reduce((result, str, i) => {
    const value = values[i] ? `<span>${values[i]}</span>` : '';
    return result + str + value;
  }, '');
}
const language = 'JavaScript';
const years = 10;
const result = highlight`I have been coding in ${language} for ${years} years`;
console.log(result);β€9π6
  What is the output?
  Anonymous Quiz
    21%
    I have been coding in <span>JavaScript</span> for <span>10</span>
      
    38%
    I have been coding in <span>JavaScript</span> for <span>10</span> years
      
    31%
    I have been coding in JavaScript for 10 years
      
    10%
    I have been coding in <span>JavaScript</span> for <span>10</span> yearsundefined
      
    β€4π3
  CHALLENGE
function createCounter() {
  let count = 0;
  
  return {
    increment() {
      count++;
      return count;
    },
    decrement() {
      count--;
      return count;
    },
    getValue() {
      return count;
    }
  };
}
const counter1 = createCounter();
const counter2 = createCounter();
counter1.increment();
counter1.increment();
counter2.increment();
counter1.decrement();
console.log(counter1.getValue() + counter2.getValue());π7β€5π€£3π₯1
  π9π€1
  π Exploring JavaScript (ES2025 Edition)
Dr. Axel is back with his latest book covering all things relating to modern JavaScript at the language level (think built-in data types, modularity, how objects, classes and promises work, etc.). As with all of Axel's books, itβs available to buy but also to read online in HTML form for free. Heβs also produced a set of flashcards to help you learn language features in both HTML and Anki forms.
Dr. Axel Rauschmayer
Dr. Axel is back with his latest book covering all things relating to modern JavaScript at the language level (think built-in data types, modularity, how objects, classes and promises work, etc.). As with all of Axel's books, itβs available to buy but also to read online in HTML form for free. Heβs also produced a set of flashcards to help you learn language features in both HTML and Anki forms.
Dr. Axel Rauschmayer
β€4π₯4π2
  CHALLENGE
  class ShoppingCart {
  constructor() {
    if (ShoppingCart.instance) {
      return ShoppingCart.instance;
    }
    
    this.items = [];
    ShoppingCart.instance = this;
  }
  
  addItem(item) {
    this.items.push(item);
  }
  
  getItems() {
    return [...this.items];
  }
}
const cart1 = new ShoppingCart();
const cart2 = new ShoppingCart();
cart1.addItem('Book');
cart2.addItem('Laptop');
console.log(cart1.getItems());What is the output?
  Anonymous Quiz
    11%
    ['Laptop']
      
    26%
    TypeError: Cannot read property 'push' of undefined
      
    42%
    ['Book', 'Laptop']
      
    21%
    ['Book']
      
    π6π€2β€1π₯1
  The creator of the Porffor JavaScript compiler talks about the various ways to make JavaScript faster to execute, before digging into Porfforβs approach.
Oliver Medhurst
Please open Telegram to view this post
    VIEW IN TELEGRAM
  β€5π4π₯1
  CHALLENGE
const templateFn = (strings, ...values) => {
  return strings.reduce((result, str, i) => {
    const value = values[i] !== undefined ? 
      (typeof values[i] === 'number' ? values[i] * 2 : values[i]) : '';
    return result + str + value;
  }, '');
};
const num = 5;
const str = 'world';
const result = templateFn`Hello ${str}, ${num} times ${'!'}`;
console.log(result);π5β€2
  What is the output?
  Anonymous Quiz
    20%
    Hello world, 10 times !undefined
      
    31%
    Hello world, 5 times !undefined
      
    36%
    Hello world, 10 times !
      
    14%
    Hello world, 5 times !
      
    π€6β€5π4
  A custom element that uses the CSS Custom Highlight API (supported by most modern browsers) for syntax highlighting so you donβt need to retreat to the age-old method of wrapping every token in spans.
AndrΓ© Ruffert
Please open Telegram to view this post
    VIEW IN TELEGRAM
  π6β€3π₯1
  CHALLENGE
function processConfig(config) {
  const settings = {
    timeout: config.timeout ?? 1000,
    retries: config.retries ?? 3,
    logging: config.logging ?? false,
    debug: config.debug || true
  };
  
  return settings;
}
const userConfig = {
  timeout: 0,
  retries: null,
  logging: false,
  debug: false
};
console.log(processConfig(userConfig));π9β€1
  What is the output?
  Anonymous Quiz
    21%
    { timeout: 1000, retries: null, logging: false, debug: true }
      
    31%
    { timeout: 1000, retries: 3, logging: false, debug: false }
      
    37%
    { timeout: 0, retries: 3, logging: false, debug: true }
      
    11%
    { timeout: 0, retries: 3, logging: false, debug: false }
      
    π₯8β€4π3
  CHALLENGE
const createMathOps = (base) => {
  return {
    add: (x) => base + x,
    multiply: (x) => base * x
  };
};
const createAdvancedMathOps = (base) => {
  const basicOps = createMathOps(base);
  return {
    ...basicOps,
    square: () => basicOps.multiply(base),
    addThenSquare: (x) => {
      const added = basicOps.add(x);
      return added * added;
    }
  };
};
const calculator = createAdvancedMathOps(5);
console.log(calculator.addThenSquare(3));π8β€1
  π€£22π€17β€4
  CHALLENGE
const obj = { name: 'Alice', age: 30 };  
const handler = {
  get(target, prop) {
    return prop in target ? target[prop] : `Property '${prop}' doesn't exist`;
  }
};
const proxy = new Proxy(obj, handler);
const descriptors = Object.getOwnPropertyDescriptors(obj);
Reflect.defineProperty(obj, 'city', {
  value: 'New York',
  enumerable: false
});
console.log(proxy.city, proxy.country);β€3π₯2