プロが教える店舗&オフィスのセキュリティ対策術

知識のある方に教えて頂きたいことがございます。
jqueryを何気なく組んでいたもので、基礎的なことがわかっておらず
ご教示頂きたいのですが、
下記に記述した変数の(1)~(6)をどれが
グローバル変数で、どれがローカル変数なのかご教示いただけますでしょうか。
関数の中は全てローカル変数になるという事を聞いたので、(3)と(4)はローカル変数、
プラグイン自体関数なので、(5)と(6)はローカル変数
(1)と(2)はグローバル変数だと考えておりますが、あっていますでしょうか。
どうかよろしくお願い致します。

$(function(){

var a = 0;//(1)
b = 0;//(2)

function Kansu(){
var c = 0;//(3)
a = 1;//(4)
}
})

/* ----------------------------------------- */

(function($){

$.fn.testPlugin = function(options){
var d = 0;//(5)
e = 0;//(6)
}

});

A 回答 (1件)

ローカル変数:(1), (3), (5)


グローバル変数:(2), (4), (6)

> 関数の中は全てローカル変数になる
のはあいにくながら JavaScript 以外の言語の話です。
JavaScript の場合は、以下の場合のみローカル変数となります。
(1)以下の二つをどちらも満たす。
 (a) 何らかの関数の中で定義されている。
 (b) var キーワードを付加して定義されている。
(2)関数の宣言時の引数。

あなたが番号を付けた変数は(2)ではありませんが、いずれも(1)-(a)を満たします。
したがって、(1)-(b)で言う var の有無でグローバルか否かが決まります。

……「でも (1) と (2) は関数の外にありますよね」と思われましたか?
1 行目に function(){ という記述があって、その鍵括弧が閉じる前に (1) と (2) が定義されてます。つまりこれらはその一番大外の関数の中で定義されています。したがってこれらも(1)-(a)を十分満たしています。

参考URL:http://builder.japan.zdnet.com/script/sp_javascr …
    • good
    • 1
この回答へのお礼

わかりやすいご説明、どうもありがとうございました!!大変助かりました!

お礼日時:2014/12/29 08:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!