本人初学JavaScript。学着用构造函数创建一个新对象,但是对函数的参数不是很懂,我的本意是把函数的参数作为新建的对象的属性值,所以分别试了4种情况,、第1种情况:把函数的参数不赋值;第2种情况:把函数的参数赋值在函数的外面;第3种情况:把函数的参数赋值在函数的{}里面;第4种情况:把函数的参数赋值在函数的()里面。特别对第1种情况和第2种出现的情况难以理解,请大神解释一下。
第1种例子 参数不赋值
<script>
function person(a01, b01, c01){
this.name = a01;
this.age = b01;
this.sex = c01;
}
var son=new person();
alert("姓名:"+son.name+", 年龄:"+son.age+", 性别:"+son.sex);
</script> //弹出姓名年龄性别均为undefined,我以为会弹出a01 b01 c01
第2种例子 参数赋值在函数的外面
<script>
var a01="Lee"; var b01="32"; var c01="male";
function person(a01, b01, c01){
this.name = a01;
this.age = b01;
this.sex = c01;
}
var son = new person();
alert("姓名:"+son.name+", 年龄:"+son.age+", 性别:"+son.sex);
</script> //弹出姓名年龄性别均为undefined,我以为会弹出Lee 32 male
第3种例子 参数赋值在函数的 { }里面
<script>
function person(a01, b01, c01){
this.name = a01 = "Lee";
this.age = b01 = "32";
this.sex = c01 = "male";
}
var son = new person();
alert("姓名:"+son.name+", 年龄:"+son.age+", 性别:"+son.sex);
</script> //弹出姓名年龄性别分别为Lee 32 male,与设想一致。
第4种例子 参数赋值在函数的 ( )里面
<script>
function person(a01, b01, c01){
this.name = a01;
this.age = b01;
this.sex = c01;
}
var son=new person("Lee", "32", "male");
alert("姓名:"+son.name+", 年龄:"+son.age+", 性别:"+son.sex);
</script> //弹出姓名年龄性别分别为Lee 32 male,与设想一致。
BluesRocker (作者)
谢谢! 请问看那本书或者哪网站 有对函数参数的 比较本质的解释. 你这样解释说得通, 但是我还是不知道本质原因. 还有一种情况, 如果我同时在 { }里面和在( )里面赋值, 会以{ }里面的参数的值为准. 这又是为什么?
2015-07-29 23:19
BluesRocker (作者)
为什么我会做4种测试,因为for()语句()里面的第一个初始表达式可以放在for语句的外面, 而第三个执行表达式可以放在{}里面,所以我以为至少for()语句()的这种情况感觉也可以适用于函数的()里面的参数. 但是感觉函数的()里面的参数和for()语句()里面的三个表达式还是有区别的.但是还是搞不懂本质区别是什么?
2015-07-29 23:26
BluesRocker (作者)
刚看了Nicholas的JS高级程序设计, for语句是因为没有块级作用域. 但单单函数是有私有作用域和私有变量的,而函数的参数就是函数的私有变量. 函数外面定义的变量名即使与函数的参数名一致,函数外面的变量的值也对函数内部的参数的值起不了作用,不知道这样理解对不对.
2015-07-30 00:49