jsを触っていると、ホイスティング(巻き上げ)というものが出てきたので
まとめる。
ホイスティング
console.log(v)
console.log(l)
console.log(c)
var v = 1
let l = 2
const c = 3
//→結果
// Uncaught ReferenceError: Cannot access 'l' before initialization
// ここでvがエラーにならないのは、varはホイスティングしているからです。vはundefinedとして処理されます。
// もしも、変数vのundefinedがどこかで使わるなら大問題になりかねないですね。定義していないのに、使われるわけですから
// その予防策としてletなどを使用するようにしましょう。多分これがvar非推奨の要因なんでしょうな。
// 関数はホイスティングする
Hos()
//動く
HosClass()
//動かずエラーになる
function Hos(){
var test = 1
console.log(test)
}
// クラスはホイスティングしない
class HosClass {
constructor(test){
this.test = 'testt'
}
// var test = 1
//変数を定義してもエラーになります。
//なので、クラスを使った際に、変数定義で変な値が入ることはないとこと思われます。
}
var |
巻き込みあり |
---|---|
let |
巻き込みなし |
const |
巻き込みなし |
function(関数) |
巻き込みあり |
class(クラス) |
巻き込みなし |
基本は、巻き込みなしのletを使用する。
constも巻き込みなしなので、使用OK.
関数を使用する際には注意かな。
関数定義を書く前に、関数の使用をするとスルーされてしまうのでご注意を!!!
巻きこみ
自分の中での巻き込みは、
「ダウンタウンのガキの使いやあらへんで !! 体育館で24時間鬼ごっこ !」の
浜田だけカップ麺をあんまり食べさせてくれない時に、巻き込んだシーン!
いやそれは、巻き込み!
今は巻き上げ!
覚えた!