◆ class, super, import, export, const は使えない
◆ let は使える 

ES6 で新しく class, super, let, const, import, export とキーワードが出てきました

この中で let だけは変数名に使えます
try{
    Function(`
        var class = 1
    `)()
}catch(e){
    console.log("class の宣言に失敗しました")
}

try{
    Function(`
        var super = 1
    `)()
}catch(e){
    console.log("super の宣言に失敗しました")
}

try{
    Function(`
        var let = 1
    `)()
}catch(e){
    console.log("let の宣言に失敗しました")
}

try{
    Function(`
        var const = 1
    `)()
}catch(e){
    console.log("const の宣言に失敗しました")
}

try{
    Function(`
        var import = 1
    `)()
}catch(e){
    console.log("import の宣言に失敗しました")
}

try{
    Function(`
        var export = 1
    `)()
}catch(e){
    console.log("export の宣言に失敗しました")
}
class の宣言に失敗しました
super の宣言に失敗しました
const の宣言に失敗しました
import の宣言に失敗しました
export の宣言に失敗しました

これまでのコードが動かなくならないように 新しいキーワードを変数に使えなくはできないので let は使えるようです
でも super や import まで昔から予約語だったんですね

一応 const などもプロパティには使えるので
window.const = 1

とすればグローバル変数にできます
ただ データを取り出すときにも window.const としないといけないです

let は変数に使えるといっても あまり変数名にしない単語なので使いみちに困りましたが こんなことしてみるとどこかの言語でみたような書き方にできます
var a = 1, b = 2, c = 3
let([a*b, b*c, c*a], (ab, bc, ca) => {
    console.log(ab + bc + ca)
})

function let(args, fn){
    return Array.isArray(args) ? fn(...args) : fn(args)
}

一時変数を作りたいけど使う部分は限られてるから小さなスコープに収めたいってときに ブロックスコープ + let で
var a = 1
{
    let b = a * a
    fn(b, b + 1)
}
とできますが コレに近いことができます

let 関数だと関数スコープになるので this だったりジェネレータだったりで面倒な点もありますので let で宣言するほうが良い場合のほうが多いかもです