日本語プログラミング言語なでしこの公式掲示板

なでしこ の 掲示板

トップ 新規 検索

2021-05-09 23:15:08

なでしこさんV3のスコープ

ななっしー さん

JavaScript と比較してみる。

関数 F の中に関数 f を置く。引数なしで f() を実行。
まずは JavaScript。

function F(X){
 function f(){
  return X;
 }
 return f();
}
alert(F(2));

//-->2

なでしこさん。

●(X)Fとは
 ●()fとは
  Xを戻す。
 ここまで
 f()して、戻す。
ここまで
F(2)して、表示する。

//-->undefined

JavaScript は変数の参照先が関数内で見つからないと直上の関数の変数を探しにいく。
なでしこさんは変数の参照先が関数内で見つからないとグローバル変数を探しにいく。

次は変数宣言なしで代入。

function f(){
 A=1;
}
f();
alert(A);

//-->1

//Aは3。
●()fとは
 Aは1。
ここまで
f()。
Aを表示する。

//-->undefined
//Aは3。の行を追加した場合は-->1

JavaScript で変数宣言なしに代入するとそれはグローバル変数となる。
なでしこさんで変数宣言なしに代入すると、
もしそれがすでにグローバル変数にあれば
グローバル変数となり、
なければ
ローカル変数となる。

というか宣言があろうとなかろうと先にグローバル変数として存在していなければ全てローカル変数になるのか。

いや、いいとかわるいとかでなく、確認までに。
AWK も「似た」ようなモンだし(ruby もそうらしいけどわたしは使えない)。

(編集パスワード送信)


テキスト表示



親記事

この内容(No.1043)に返信

この内容(No.1043)をダウンロード

この内容(No.1043)のテキスト表示





www.eznavi.net