暮らしの技術

暮らしを豊かにする技術や、特に暮らしを豊かにしない技術があります

JavaScriptの関数定義と関数を変数に束縛した時の挙動の違い

JavaScriptの変数は巻き上げ(hoisting)と呼ばれる挙動をするのでね……と言う話.

実際にコードで挙動を示した.RUNって書かれたボタンを押すと動く.

http://jsfiddle.net/6xczopuv/3/
http://jsfiddle.net/6xczopuv/5/

なんか昨日あたりからカッコで括るJavaScriptの無名関数 (function(){/*処理*/})(); | Big Bangがバズってて,本筋とは関係ないんだけど,関数定義と関数を変数に束縛するのを同じですって書かれててもんにょりしたから書いた.たぶん先の記事を書いた人わかっていて,記事の中心的な話題じゃ無いから全体の流れを優先して同じってことにしたんだと思う.JavaScriptの変数の巻き上げについて知っていれば問題ない話である.

## 追記

innertText直接使うことほとんどなくて$(selector).text()ばっかり使ってたのでこういう背景だったの知らなかった.恥ずかしい.修正しました.

あとちょっと気になったので環境にプロパティを追加する書き方(varつけずに変数定義する奴)でも追加した.それと冒頭で巻き上げの所為みたいなの書いたけど単純に実行順序の話な気がする,巻き上げが関わってくるの,さらに外側で同じ名前の変数使ってるときとかですね.