十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
javascript函数可以传递参数
公司主营业务:网站制作、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出郓城免费做网站回馈大家。
给你发一个例子
button onclick="testParam('a')"js函数传参/button
script type="text/javascript"
function testParam(str){
alert("按钮传的参数为:" + str);
var oStr = "test";
test(oStr);
}
function test(str){
alert("函数间传的参数为:" + 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调用后台带参数,参考方法如下:
后台方法:
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; //文字出现的时间间隔
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,使文字重新从第一个文字出现
//延时执行scrollit()函数,delay*10是为了让显示完整文字的时间长一点
setTimeout("scrollit()",delay*10);
}
//否则在delay毫秒后再次执行scrollit()函数
else setTimeout("scrollit()",delay);
}
scrollit();//调用scrollit()函数
/script
当然可以,但不能指定参数的类型,因为javascript是弱类型的语言。如:
function sum(a,b)
{
return a+b;
}
你说js函数的传参是按值传递,应该是看到《js高级》里面作者这么说的吧,其实有不少人对作者的观点提出了质疑,有的人觉得如果参数是引用类型,那么就是按引用传递的,还有一种说法叫“按共享传递”。
我个人偏向于的观点是:如果参数是js基本数据类型,那么就是按值传递;如果是引用类型如对象、数组、函数,那么就是按引用传递。用这个观点去解释你的例子,应该是没有矛盾的地方的。①处按照js对象的比较运算规则,只有全等号(据说比较对象时,“===”和“==”是没有区别的)两侧的变量指向的是同一个对象的引用,才返回true,即按引用传递。在“peo = {...}”这一行,实际上是创建了一个函数内的局部对象,开辟了新的内存地址,并将peo变量指向该处,而之前的person变量指向的对象不变,故而②比较的是两个指向不同对象的变量,返回false。
你可以这么去理解js函数传参的过程:js解析器在分析js的函数声明代码时,如果函数有带参数,实际上是在开始时加了一行代码:var 参数1,参数2...;即将参数隐性的声明为函数的局部变量,没有赋值(下面的函数例子可以说明这点,第一个函数虽然声明是有形参,但是调用执行时没有传参,即a只声明未赋值,所以是undefined;第二个函数的a不存在,所以报错)。等到函数真正被调用,传进来实参的时候,只是将实参变量赋给了形参变量,比如你的例子中,函数调用执行时会自动加一句:peo = person;即两个不同的变量指向了同一个对象,这自然就是按引用传递。
function aa(a) {
console.log(a)
}
aa() //输出undefined
function ab() {
console.log(a)
}
ab() //报错,Uncaught ReferenceError: a is not defined