⑴ javascript 函數的參數 是局部變數嗎
函數的參數是在函數內部可用的,是局部變數
但如果參數是個數組或對象(引用類型),則函數內部是可以影響到外部傳參之前的變數的值
JavaScript函數傳參傳遞的仍然是值傳遞,而不是引用傳遞
⑵ javascript怎麼定義函數
1:調用關鍵字function來構造
functiondistance(x1,x2,y1,y2)
{
vardx=x2-x1;
vardy=y2-y1;
returnMath.sqrt(dx*dx+dy*dy);
}
2:使用Function()構造函數(請注意與上面的大小寫)
1
varf=newFunction*"x","y","returnx*y");
這行代碼創建了一個新函數,該函數和你所熟悉的語法定義的函數基本上時等價的:
1
2
3
4
functionf(x,y)
{
returnx*y;
}
Functino()構造函數可以接受任意多個字元串參數。它的最後一個參數時函數的主體,其中可以包含任何JavaScript語句,語句之間用分號分隔。其他的參數都是用來說明函數要定義的形式參數名的字元串。如果你定義的函數沒有參數,那麼可以只需給構造函數傳遞一個字元串(即函數的主體)即可。
注意,傳遞給構造函數Function()的參數中沒有一個用於說明它要創建的函數名。用Function()構造函數創建的未命名函數有時被成為「匿名函數」。
你可能非常想知道Function()構造函數的用途是什麼。為什麼不能只用function語句來定義所有的函數呢?原因是Function()構造函數允許我們動態地建立和編譯一個函數,它不會將我們限制在function語句預編譯的函數體中。這樣做帶來的負面影響效應就是每次調用一個函數時,Function()構造函數都要對它進行編譯。因此,在循環體中或者在經常使用的函數中,我們不應該頻繁地調用這個構造函數。
使用Function()構造函數的另一個原因是它能夠將函數定義為JavaScript表達式的一部分,而不是將其定義一個語句,這種情況下使用它就顯得比較的方面,甚至可以說精緻。
3:函數直接量
函數直接量是一個表達式,它可以定義匿名函數。函數直接量的語法和function語句非常相似,只不過它被用作表達式,而不是用作語句,而且也無需指定函數名。下面的三行代碼分別使用function()語句、Funciont()構造函數和函數直接量定義了三個基本上相同的函數:
1
2
3
functionf(x){returnx*x};
varf=newFunction("x","returnx*x;");
varf=function(x){reurnx*x};
在JavaScript1.1中,可以使用構造函數Function()來定義函數,在JavaScript1.2和其後的版本中,還可以使用函數直接量來構造函數。你應該注意這兩種方法之間的重要差別。
首先,構造函數Function()允許在運行時動態地創建和編譯JavaScript代碼。但是函數直接量卻是函數結構的一個靜態部分,就像function語句一樣。
其次,作為第一個差別的必然結果,每次調用構造函數Function()時都會解析函數體並且創建一個新東漢數對象。如果對構造函數的調用出現在一個循環中,或者出現在一個經常被調用的函數中,這種方法的效率非常低。另一個方面,函數直接量或出現在循環和函數中的嵌套函數不是在每次調用時都被重新編譯,而且每當遇到一個函數直接量時也不創建一個新的函數對象。
Function()構造函數和函數之間量之間的第三點差別是,使用構造函數Function()創建的函數不使用詞法作用域,相反的,它們總是被當作頂級函數來編譯,就像下面代碼所說明的那樣:
⑶ javascript如何給事件處理函數傳遞參數
在js中,函數名加括弧的時候就會自動執行,簡單的加上參數也會自動執行。
也就是說window載入專的時候就執行代碼屬了,意味著給事件添加這種自定義函數的時候只能執行一次,所以傳遞參數只能間接執行,解決方案如下:
不直接將函數名賦予給事件,而是將你自定義的函數函數+參數放在事件函數的裡面,這樣就事件觸發你的函數就能重復執行了。
functiona(b){alert(b)};
letb="helloword!";
document.onclik=function(){
a(b);//間接傳遞參數
}
⑷ JS函數的幾種定義方式
JS函數的定義方式比較靈活,它不同於其他的語言,每個函數都是作為一個對象被維護和運行的。先看幾種常用的定義方式:function func1([參數]){/*函數體*/}var func2=function([參數]){/*函數體*/};var func3=function func4([參數]){/*函數體*/};var func5=new Function();上述第一種方式是最常用的方式,不用多說。第二種是將一匿名函數賦給一個變數,調用方法:func2([函數]);第三種是將func4賦給變數func3,調用方法:func3([函數]);或func4([函數]);第四種是聲明func5為一個對象。再看看它們的區別:function func(){//函數體}//等價於var func=function(){//函數體}但同樣是定義函數,在用法上有一定的區別。<script>//這樣是正確的func(1);function func(a){alert(a);}</script><script>//這樣是錯誤的,會提示func未定義,主要是在調用func之前沒有定義func(1);var func = function(a){alert(a);}//這樣是正確的,在調用func之前有定義var func = function(a){alert(a);}func(1);</script>用同樣的方法可以去理解第三種定義方式。
⑸ JS函數的參數如何設置
1.php有個很方便的用法是在定義函數時可以直接給參數設默認值,如:<br><br>function simue ($a=1,$b=2){<br> return $a+$b;<br>}<br>echo simue(); //輸出3<br>echo simue(10); //輸出12<br>echo simue(10,20); //輸出30<br><br>但js卻不能這么定義,如果寫 simue(a=1,b=2){}會提示缺少對象。<br><br>2.js函數中有個儲存參數的數組arguments ,所有函數獲得的參數會被編譯器挨個保存到這個數組中。於是我們的js版支持參數默認值的函數可以通過另外一種變通的方法實現,修改上例:<br><br>function simue (){<br> var a = arguments[0] ? arguments[0] :<br>1;<br> var b = arguments[1] ? arguments[1] :<br>2;<br> return a+b;<br>}<br>alert( simue() ); //輸出3<br>alert( simue(10) ); //輸出12<br>alert( simue(10,20) ); //輸出30
⑹ javascript js 函數調用 參數
oTextArea.onkeydown = handle 的意思是此事件引用了名為handle的函數,如果加(),那麼意思就變了版,變成此事件獲權取handle函數的返回值,handle函數會在事件未被觸發時就被執行。建議你有空了解一下JS方面的書籍,可以長很多見識。