[英]Accessing a variable to javascript function
我知道這個問題聽起來很愚蠢。 但我實際上需要幫助。
我有一個局部變量。 我想在javascript函數中訪問該變量。
我知道有兩種方法可以做到。
第一種方法是將它作為參數傳遞給函數。
下一種方法是將局部變量設置為全局變量並訪問函數中的全局變量。
<script type="text/javascript">
function func1(j)
{
alert(j);
}
function func2()
{
alert(globali2);
}
function test()
{
var i1 = 10;
// First way. Passing argument to function
func1(i1);
// Second way. Using global variable.
var i2 = 22;
globali2 = i2;
func2();
}
test();
</script>
有沒有其他方法來訪問函數內的變量。
謝謝,保羅
更新:
我想從第二個函數訪問第一個函數中定義的變量。 我將無法更改第二個功能的功能簽名。 我現在唯一的解決方案是使用全局變量。 我只是希望有另一種方法,而不是使用全局變量。
Javascript有一個非常重要的設計模式可以解決您的問題: 命名空間 。 它提供了一種處理許多不同函數所需的變量的方法,而不必每次都將它們作為參數處理,並且還避免使用全局變量。 這樣,只需在全局空間中創建一個成員 - 您的命名空間,您的腳本就會產生“最小占用空間”。 jQuery是使用這種設計模式的最突出的例子。
Javascript有一個非常強大的功能( 一流的成員 )。 這意味着您可以嵌套它們:
// this is your namespace - it is the only point of access to your script
// no variable will leak out of it's scope
var yourNamespace = (function(){
// these variables are local, but can be accessed
// within every function of your namespace
var pseudoglobal1 = ["foo","bar"],
pseudoglobal2 = "123";
function func1(){
alert(pseudoglobal1 );
}
/*additional functions you need*/
// functions you want to make public are returned here
// IMPORTANT: the { must not be on a newline!
return {
publicName : func1
}
})();
這樣你就可以避免討厭的全局變量,但仍然可以在所有函數中使用重要的變量。
第三種方式,非常簡單的方法:您可以在與局部變量相同的范圍內定義您的函數。 例如,如果您定義一個函數
func3() {
alert(i1);
}
在函數test()里面,這個函數將能夠返回i1!
請參閱以下代碼:
function test()
{
var i1 = 10;
// First way. Passing argument to function
func3()
{
alert(i1);
}
func3(); // this will alert i1
}
編輯(刪除一些內容): 這被命名為“閉包”(內部函數可以訪問外部函數的變量),這是一個非常有趣的Javascript概念!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.