JavaScriptの変数宣言の豆知識_基礎知識

WBOY
リリース: 2016-05-16 17:18:44
オリジナル
1047 人が閲覧しました

先週の木曜日の昼食後、リーダーが私たちに JavaScript の質問を送ってきました。私たちのチームにはフロントエンドで働く人、バックエンドで働く人、そしてモバイル Web で働く人がいます。そのため、質問に対する理解は人それぞれ異なります。その後、QQ ディスカッション グループで議論します。非常に基本的な発見ですが、ディスカッションを通じて多くのことを学び、共有することができました。もちろん、開発経験のある開発者からすれば、これらは JavaScript を学ぶ上で最も基本的なことです。私は普段 jQuery やサードパーティの JS コンポーネントを使用しているため、基本的な JavaScript の学習には十分な注意を払っていません。タイトルは次のとおりです。2 つのアラートの出力結果は何ですか?

コードをコピー コードは次のとおりです:

type= text/javascript ">
var a = 1;
var a;
alert(typeof a);

(function () {
b = '-----';
var b;
})();
alert( typeof b);


私の答えは、1. 未定義 2. 未定義です。それからリーダーは私たちに、質問に対する答えを慎重に検討するように言いました。このトピックについての私の分析:
1. a を宣言して値を 1 に割り当て、その後 a を再宣言しますが、この時点では値が割り当てられていない場合、変数のデフォルト値は未定義になるはずです。
2. b変数は関数内のローカル変数であり、グローバル変数bはalertで出力されるため未定義です。
Chrome でコードを自分で実行しました。コードの正しい結果は 1.number 2.unknown です。ここで検討するのはJavaScriptの変数宣言の事前宣言の概念です。
次のような別の例を見ていきます:
コードをコピーします コードは次のとおりです:

test();

function test(){
alert("Hello World!");
}


プログラムはエラーを報告しませんが、実行結果は次のようになります。 Hello World! 。原則: コンピューターはステートメントの実行を開始する前に、まずすべての関数定義を検索し、次に関連する関数を保存します。
質問 1:
var a = 1;
var a;
2 行目で変数 a を宣言することは、先頭で a を宣言することと同じで、最初の文で a を再宣言してから代入します。値は 1。したがって、typeof a はnumber
質問 2:
b = '-----';
var b;
2 番目の質問の分析: b='-----'、プログラムまず、コンテキスト内に変数 b の宣言があるかどうかを確認し、宣言されている場合は値を '-----' に直接割り当てます。ただし、alert(typeof b); は関数の外にあり、グローバル変数 b を出力しますが、これらはすべて未定義です。
注意: 変数への代入は事前には行われません。

結果を書き込んでください。
分析は次のコード セグメントとして記述できます:




コードをコピー


コードは次のとおりです:

name= "aaa";
function test(){
alert(typeof name);//関数内を調べて、コンテキスト内に name の宣言があるかどうかを確認します。宣言。ただし、代入操作を進めることはできないため、型は未定義です
var name="bbb";//代入操作alert(typeof name);//string}test() ; しかし、次のコード スニペットを実行すると結果はどうなるでしょうか?



コードをコピー


コードは次のとおりです:

プログラムの実行結果は :string, string です。ここで混乱しており、どのように分析して説明すればよいかわかりません。変数宣言については事前に理解しているつもりですが、学習したメソッドを使用して上記のコード スニペットを分析すると、間違った結果が得られます。では、変数の代入は、変数が関数の外側 (グローバル変数) にあるか関数の内側 (ローカル変数) にあるかとどのような関係があるのでしょうか?
関連ラベル:
ソース:php.cn
前の記事:ウィンドウを閉じる JS または page_javascript を閉じる JS スキルのいくつかのコードを共有する 次の記事:jquery とネイティブ js は、選択ドロップダウン ボックスで選択された値を取得します。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
関連トピック
詳細>
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート