javascript函數(shù)可以傳遞參數(shù)
公司主營業(yè)務:網站制作、網站建設、移動網站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)推出鄆城免費做網站回饋大家。
給你發(fā)一個例子
button?onclick="testParam('a')"js函數(shù)傳參/button
script?type="text/javascript"
function?testParam(str){
alert("按鈕傳的參數(shù)為:"?+?str);
var?oStr?=?"test";
test(oStr);
}
function?test(str){
alert("函數(shù)間傳的參數(shù)為:"?+?str);
}
/script
script type="text/javascript"
function Employee(Pname,Psalary){
this.name=Pname;
this.salary=Psalary;
}
Employee.prototype.getSalary=function(){
return this.salary;
}
Employee.prototype.addSalary=function(addition){
this.salary+=addition;
}
var boss1=new Employee("Joan",2000);
var boss2=new Employee("Kim",1000);
var boss3=new Employee("Sam",1500);
document.write("boss1's Salary is "+boss1.getSalary()+"br/");
document.write("boss2's Salary is "+boss2.getSalary()+"br/");
document.write("boss3's Salary is "+boss3.getSalary()+"br/");
boss1.addSalary(200);
document.write("boss1's Salary is "+boss1.getSalary()+" after additionbr/");
/script
JS調用后臺帶參數(shù),參考方法如下:
后臺方法:
protected string CsharpVoid(string strCC)
{
strCC = "你好!" + strCC;
return strCC;
}
前臺JS如下:
function Init()
{
var v = "中國";
var s = '%=CsharpVoid("'+v+'") %';
alert(s);
}
span id="demo"/span
script
var text="dffasdfasdfadsfadsfdaf;klsjdf;lkajsdf'alskdjf'asdlf"; //預定文字
var delay=200; //文字出現(xiàn)的時間間隔
var i=0 ; //初始化變量 i
function scrollit(){
//設置 id 為 demo 的對象內的文字為從變量 text 的 0 開始到 i 間的文字加"_"
document.getElementById('demo').innerHTML=text.slice(0,i++)+"_";
if(itext.length){ //當 i 大于 text 的文本長度時
i=0; //重設 i 為 0,使文字重新從第一個文字出現(xiàn)
//延時執(zhí)行scrollit()函數(shù),delay*10是為了讓顯示完整文字的時間長一點
setTimeout("scrollit()",delay*10);
}
//否則在delay毫秒后再次執(zhí)行scrollit()函數(shù)
else setTimeout("scrollit()",delay);
}
scrollit();//調用scrollit()函數(shù)
/script
當然可以,但不能指定參數(shù)的類型,因為javascript是弱類型的語言。如:
function sum(a,b)
{
return a+b;
}
你說js函數(shù)的傳參是按值傳遞,應該是看到《js高級》里面作者這么說的吧,其實有不少人對作者的觀點提出了質疑,有的人覺得如果參數(shù)是引用類型,那么就是按引用傳遞的,還有一種說法叫“按共享傳遞”。
我個人偏向于的觀點是:如果參數(shù)是js基本數(shù)據(jù)類型,那么就是按值傳遞;如果是引用類型如對象、數(shù)組、函數(shù),那么就是按引用傳遞。用這個觀點去解釋你的例子,應該是沒有矛盾的地方的。①處按照js對象的比較運算規(guī)則,只有全等號(據(jù)說比較對象時,“===”和“==”是沒有區(qū)別的)兩側的變量指向的是同一個對象的引用,才返回true,即按引用傳遞。在“peo = {...}”這一行,實際上是創(chuàng)建了一個函數(shù)內的局部對象,開辟了新的內存地址,并將peo變量指向該處,而之前的person變量指向的對象不變,故而②比較的是兩個指向不同對象的變量,返回false。
你可以這么去理解js函數(shù)傳參的過程:js解析器在分析js的函數(shù)聲明代碼時,如果函數(shù)有帶參數(shù),實際上是在開始時加了一行代碼:var 參數(shù)1,參數(shù)2...;即將參數(shù)隱性的聲明為函數(shù)的局部變量,沒有賦值(下面的函數(shù)例子可以說明這點,第一個函數(shù)雖然聲明是有形參,但是調用執(zhí)行時沒有傳參,即a只聲明未賦值,所以是undefined;第二個函數(shù)的a不存在,所以報錯)。等到函數(shù)真正被調用,傳進來實參的時候,只是將實參變量賦給了形參變量,比如你的例子中,函數(shù)調用執(zhí)行時會自動加一句:peo = person;即兩個不同的變量指向了同一個對象,這自然就是按引用傳遞。
function?aa(a)?{
console.log(a)
}
aa()?//輸出undefined
function?ab()?{
console.log(a)
}
ab()?//報錯,Uncaught?ReferenceError:?a?is?not?defined