1

JavaScript を使用する場合、次のように関数の括弧内に何かを入れると:

<button onclick="myFunction('Hello')">Click Here!</button>

そしてJSで:

function myFunction(i);

実行するとすぐに定義var i = "Hello"されますか、それとも何か他のものですか?

4

3 に答える 3

3

実行されるとすぐに var i = "Hello" を定義しますか、それとも何か他のものですか?

呼び出しが発生すると、 "Hello"が関数に渡され、関数は という引数を使用してそれを受け取りますi。したがって、関数コード内で を参照するiと、 value が得られます"Hello"

あなたの例では、ユーザーがボタンをクリックすると呼び出しが発生しますonclick。これは、そのクリックにより、定義した属性のコードがトリガーされるためです。

于 2013-03-12T22:38:35.483 に答える
0

あなたのコードで:

<button onclick="myFunction('Hello')">Click Here!</button>

function myFunction(i) {
    alert(i); // display the i value on this case «Hello» 
}

«i»は関数のパラメータ/引数です

hello bybyeを変更すると、i値は関数でのみ«bye»になります

<button onclick="myFunction('Bye')">Click Here!</button>

function myFunction(i) {
    alert(i); // display «Bye» 
}
alert(i); // outside the function i is undefined ;)
于 2013-03-12T23:08:39.353 に答える
0

ドキュメントから

すべての実行コンテキストには、VariableEnvironmentが関連付けられています。実行コンテキストで評価されたECMAScriptコードで宣言された変数と関数は、そのVariableEnvironmentの環境レコードにバインディングとして追加されます。関数コードの場合、パラメーターもその環境レコードへのバインディングとして追加されます。

完全なドキュメントについては、http://ecma-international.org/ecma-262/5.1/#sec-10.5を参照してください。

var i = "hello";つまり、実行コンテキストのVariableEnviromentの同じエントリに対応するため、バインディングと同等です。

次の手順を実行すると、これが実際に動作していることがわかります。

function hello(i) {
  var i ="no hello"; 
  console.log(arguments[0]);
}

hello("hi")

>>"no hello"
于 2013-03-12T22:44:21.100 に答える