const/letとvarのスコープに関する覚書
function内において、varは継承(?)されるがconst/letは継承(?)されない。
関数呼び出しにおいてはどちらも継承(?)されない。
<script type="text/javascript"> (function func(){ var _var = " var_func"; const _const = " const_func"; let _let = " let_func"; console.log(_var); //->var_func console.log(_const); //->const_func console.log(_let); //->let_func console.log(" {"); for(i=0;i<1;i++){ //console.log(_var); -> var_func //func内のものが継承されている //console.log(_const); -> undefined //"for内の_const"にはまだ代入されていない //console.log(_let); -> undefined //"for内の_let"にはまだ代入されていない var _var = " var_for"; const _const = " const_for"; let _let = " let_for"; console.log(_var); //->var_for console.log(_const); //->const_for console.log(_let); //->let_for }; console.log(" }"); console.log(_var); //->var_for //継承されfor内で書き換えられた console.log(_const); //->const_func //継承されないのでfor内のものとは別 console.log(_let); //->let_func //継承されないのでfor内のものとは別 func2(); //_const = "const_func_2"; ->Error constは再代入不可 })(); function func2(){ //console.log(_var); -> undefined //console.log(_const); -> undefined //console.log(_let); -> undefined } </script>