1

使用 javascript 时,如果您在函数的括号中添加一些内容,例如:

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

在 JS 中:

function myFunction(i);

var i = "Hello"它是在运行时立即定义,还是其他?

4

3 回答 3

3

它是在运行后立即定义 var i = "Hello" 还是其他?

当调用发生时,该 被传递给函数,该函数使用被调用的参数"Hello"接收它。所以在函数代码中,引用给你的值。ii"Hello"

在您的示例中,当用户单击按钮时会发生调用,因为该单击会触发onclick您定义的属性中的代码。

于 2013-03-12T22:38:35.483 回答
0

从文档

每个执行上下文都有一个关联的变量环境。在执行上下文中评估的 ECMAScript 代码中声明的变量和函数作为绑定添加到该变量环境的环境记录中。对于功能代码,参数也作为绑定到该环境记录添加。

有关完整文档,请参阅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 回答
0

使用您的代码:

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

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

«i» 是您的函数的参数/参数

现在,如果您将 hello 更改为 bye,则 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 回答