2013-03-12 233 views
1

時使用JavaScript,如果你把東西在函數的括號,如:JavaScript:函數myFunction(**這是什麼**);

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

,並在JS:

function myFunction(i); 

,因爲它是運行是否儘快確定var i = "Hello",或者別的東西?

+0

是的,它通過變量。這就是所謂的爭論。 [但它是一個五分鐘的論點或整整半個小時?](http://www.youtube.com/watch?v=kQFKtI6gn9Y) – Popnoodles 2013-03-12 22:38:35

+0

這是一個教程級別的問題。閱讀:https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Functions – millimoose 2013-03-12 22:39:24

回答

3

它是否定義變種i =「你好」,只要它運行,或者別的什麼?

當呼叫發生時,"Hello"被傳遞到功能,採用參數稱爲i它接收。所以在功能代碼中,參照i給出值"Hello"

在您的示例中,當用戶單擊該按鈕時發生調用,因爲該單擊會觸發您已定義的onclick屬性中的代碼。

0

從文檔

每個執行上下文具有相關聯的VariableEnvironment。 在 執行上下文中評估的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" 
+0

FWIW,ECMA現在有一個在線的,可鏈接的HTML版本:http://www.ecma-international.org/ecma -262/5.1 /#仲丁基10.5 – 2013-03-12 22:50:33

0

與您的代碼:

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

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

「I」爲您的功能

參數/參數現在,如果你改變你好再見我的價值將«再見»只在你的功能

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

function myFunction(i) { 
    alert(i); // display «Bye» 
} 
alert(i); // outside the function i is undefined ;) 
相關問題