使用javascript时,如果你在函数的括号中添加了一些东西,比如:
<button onclick="myFunction('Hello')">Click Here!</button>
并在JS中:
function myFunction(i);
运行时是否定义var i = "Hello"
,还是其他什么?
答案 0 :(得分:3)
运行后是否定义var i =“Hello”,还是别的什么?
当调用发生时,值 "Hello"
将传递给函数,该函数使用名为i
的参数接收它。因此,在功能代码中,引用i
会为您提供值"Hello"
。
在您的示例中,当用户点击按钮时会进行调用,因为该点击会触发您定义的onclick
属性中的代码。
答案 1 :(得分: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"
答案 2 :(得分:0)
使用您的代码:
<button onclick="myFunction('Hello')">Click Here!</button>
function myFunction(i) {
alert(i); // display the i value on this case «Hello»
}
«i»是函数的参数/参数
现在,如果你通过再见改变你好,那么i值将仅仅是你的函数的“再见”
<button onclick="myFunction('Bye')">Click Here!</button>
function myFunction(i) {
alert(i); // display «Bye»
}
alert(i); // outside the function i is undefined ;)