js函数遇到的问题

1.形参和实参

在大多数语言中例如java,c等都要求使用函数时要满足实参和形参类型数量相等,但是在js中对于实参形参的要求非常不严格,

<script>
//1.如果实参个数多于形参会收到形参的个数
function sum(unm1,num2)
{
    console.log(num1,num2);
}
sum(1,2,3);//结果为3,不会报错
//2.实参个数小于形参个数
function sum(unm1,num2)
{
    console.log(num1,num2);
}
sum(1);//结果为NaN,如果实参个数少则没接收到的形参为undefined,数字加undefined为NaN
</script>

还是建议大家按照规范来写代码,尽量将实参和形参个数相匹配,因为基本常用大概只有JavaScript语言可以让你参数数个数不匹配,所以说养成好习惯在你以后学习其他语言时更有帮助。

2.arguments使用

arguments对象中储存了传递的所有实参。

arguments也算是一个伪数组,具有length属性,按照索引的方式进行储存,但是它没有真正数组的一些特性。

<script>
function fn()
{
    for(var i =0;i < arguements.length;i++)
    {
        console.log(arguements[i]);
    }
}
fu(1,2,3,4,5);//输出1,2,3,4,5;
//用这个就是为了可以传进去不同个数的形参
function Max()
{
    var max = arguements[0];
    for(var i = 1;i < arguements.length;i++)
    {
        if(max < arguements[i])
            {
                max = arguements[i];
            }
    }
    return max;
}
console.log(Max(1,44,23,66,22,3,25))//输出为66
</script>

3.特殊的函数声明

//fun是变量名,不是函数名,所以这种方法声明的也成为匿名函数,但是和正常函数的作用一样。

var fun = function() {

        console.log('函数表达式');

}

fun();

4.预解析

js引擎会先将你的代码进行预解析,然后进行代码执行。

预解析会将js中所有的var 还有function 提升到当前作用域最前面

<script>
var mum = 10;
fun();
function fun()
{
    console.log(num);//输出20;由于js会进行预解析
    var num = 20;
}
</script>

5.构造函数创建对象

语法格式:function 构造函数名() {

this.属性 = 值;

this.方法 = function() {}

}

new 构造函数名();

<script>
function Star(uname,age,sex) {
    this.name = uname;
    this.age = age;
    this.sex = sex;
    this.tebie = function(tebie){
        console.log(tebie)
    }
}
var heibai = new Star('黑白',18,'男');//调用函数返回的是一个对象
console.log(heibai.name)//输出黑白
var baihei = new Star('白黑',18,'女');
console.log(baihei.sex)//输出女
heibai.tebie('高');
baihei.tebie('矮');
//构造函数名首字母要大写
</script>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值