WARNING
            This quiz is subject to dirty tricks.
Do not trust the speaker.
But don't be scared to answer.
          
What's the output?
            
const KEY = 'white_rabbit';
if (true) {
  const KEY = 'ginger_rabbit';
}
console.log(KEY);
            
          
          What's the output?
            
let x = 42;
if (true) {
  let x = 1337;
}
console.log(x);
            
          
          What's the output?
            
let x = 42;
if (true) {
  console.log(x);
  let x = 1337;
}
            
          
          
            
// Here is a new way to define functions
var double = i => i*2;
// Which is like
var double = function (i) {
  return i * 2;
};
            
          
        How to use the new syntax to define a function which doesn't take any parameter?
What's the output?
            
var x = `foo ${y}`,
    y = `bar ${x}`;
console.log(x);
            
          
          What's the output?
            
var x = `foo ${y}`,
    y = `bar ${x}`;
console.log(y);
            
          
          
            
var myMap = new Map(),
    keyObj = {},
    keyFunc = function () {};
myMap.set(keyObj, "value for keyObj");
myMap.set(keyFunc, "value for keyFunc");
myMap.get(keyObj);  // "value for keyObj"
myMap.get(keyFunc); // "value for keyFunc"
            
          
        
            
var mySet = new Set();
mySet.add(5);
mySet.add("something");
mySet.has(5);                // true
mySet.has("some" + "thing"); // true
mySet.has(32);               // false
            
          
        What's the attribute to get the quantity of objects stored in a `Set` object?
What's the difference between Map/Set and WeakMap/WeakSet ?
In ES6, is there a better way to create this object?
            
let options = {
  protocol: protocol,
  url: url,
  method: method,
  callback: callback
};
            
          
        
            
let options = {
  protocol,
  url,
  method,
  callback
};
            
          
        Which keyword is not allowed in ES6 Class definition?
            
// Create a logger facade
class Logger {
  constructor (type = "Info") {
    this.type = type;
  }
  get current()     { return `Logger: ${this.type}`; }
  set current(type) { this.type = type; }
  static create(type) { return new this(type); }
  log (message)       { /* Basic method */ }
}
            
          
        
            
var score = [12, 7, 14];
Math.max(...score);
            
          
          
            
function stuff(x::Number, y::String) {
  // Do stuff..
}
            
          
          
            
function stuff(x, ...y) {
  // Do stuff..
}
            
          
          
            
function stuff(x, y=12) {
  // Do stuff..
}
stuff(2);
            
          
          
            
function stuff(x, y=x/3) {
  // Do stuff..
}
stuff(6);
            
          
          
            
var {foo, bar} = {
  foo: 'FOO',
  bar: 'BAR'
};
            
          
          
            
var [first, , last] = [1,2,3];
            
          
          
            
function stuff(a, x=12, y=42) {
  // Do stuff..
}
stuff(1, ,2);
            
          
          What does the Promise constructor take as parameter(s)?
How to use the progress on a ES6 Promise?
(like in the Q library)
            
uploadFile()
  .then(function (data)     {/* Success */},
        function (err)      {/* Error */},
        function (progress) {/* Progress */});
// Or..
uploadFile()
  .progress(function (progress) {
    // Progress
  });
            
          
        Is there a method to take a lot of promises, wrap them into one which will be resolved (or rejected) once one of them will be resolved?
            
Promise
  .race([loadSiteMap, loadGOTin4K])
  .then(function(value) {
    // Success case
  }, function(reason) {
    // Error case
  });
            
          
        Which one of this keywords won't be compatible on ES6?
Which stable browser got the best ES6 support ?
Which var got the max value?
            
var a = 0x1101010110111,
    b = 0o1101010110111,
    c = 0b1101010110111,
    d = 001101010110111,
    e = 0E1101010110111,
    f =   1101010110111;
            
          
          | x | Hexa | 
| o/0 | Octal | 
| b | Binary | 
| E | x10exp |