BluesRocker
BluesRocker
  • 发布:2015-07-29 22:18
  • 更新:2015-07-29 22:59
  • 阅读:1129

请大神解释一下函数的参数这是为什么?代码见下面内容

分类:Native.js

本人初学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,与设想一致。

2015-07-29 22:18 负责人:无 分享
已邀请:
云海帆

云海帆 - 咨询问题请+Q1395641578

先学学JS基础吧

  1. 构造参数为空
  2. Local变量覆盖了Global变量
  • 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

该问题目前已经被锁定, 无法添加新回复