let という変数名は ES6 でも使える
- カテゴリ:
- JavaScript
- コメント数:
- Comments: 0
◆ class, super, import, export, const は使えない
◆ let は使える
◆ let は使える
ES6 で新しく class, super, let, const, import, export とキーワードが出てきました
この中で let だけは変数名に使えます
これまでのコードが動かなくならないように 新しいキーワードを変数に使えなくはできないので let は使えるようです
でも super や import まで昔から予約語だったんですね
一応 const などもプロパティには使えるので
とすればグローバル変数にできます
ただ データを取り出すときにも window.const としないといけないです
let は変数に使えるといっても あまり変数名にしない単語なので使いみちに困りましたが こんなことしてみるとどこかの言語でみたような書き方にできます
一時変数を作りたいけど使う部分は限られてるから小さなスコープに収めたいってときに ブロックスコープ + let で
let 関数だと関数スコープになるので this だったりジェネレータだったりで面倒な点もありますので let で宣言するほうが良い場合のほうが多いかもです
この中で 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 の宣言に失敗しました")
}
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 の宣言に失敗しました
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([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 b = a * a
fn(b, b + 1)
}
let 関数だと関数スコープになるので this だったりジェネレータだったりで面倒な点もありますので let で宣言するほうが良い場合のほうが多いかもです