JavaScript基础学习-05

arguments关键字

        /* 
            arguments关键字:只能在函数里面使用(系统产生的)
            arguments代表的结果:伪数组(可以当数组用:有length,也可以循环遍历)

            //arguments解决问题:不限定用户的实参的时候,通常会在函数使用arguments来获取所有的真实数据,并且进行遍历操作
         */

        function sum() {
            let res = arguments[0];
            for (let i = 0; i < arguments.length; i++) {
                res += arguments[i];
            }
            return res;
        }

        console.log(res);

        /*
            arguments变量只是"类数组对象",并不是一个数组。称其为类数组对象是说它有一个索引编号
        和length属性。尽管如此,它并不拥有全部的Array对象的操作方法。
        */

 

// 自调用函数

    (function (){
        let a = 10;
        let b = 20;
        return a + b;
    })();

/* 自调用函数:将函数定义在函数里面,并且可以直接触发代码的执行


    语法规则
    (函数定义)();        // 后面这个括号是用来调函数

*/
// 回调函数:一定是把函数当做参数传递给另外一个函数
// 回调函数在传参的时候:一定不要加()  c(a)这是回调  
// c(a()) 将a函数执行完得到返回值,将返回值赋值给c的形参
        // 需求:已经有函数能够求平方和立方,另外一个函数可以让用户指定求两个数的和(可以是平方,可以是立方)

        // 1. 有函数能够求平方和立方
        function pow(num) {
            // 返回数的平方
            return num * num;
        }

        function cube(num) {
            // 返回数的立方
            return Math.pow(num, 3);    // 等价于 :num * num * num
        }

        // 2.另外一个函数:求两个数的和
        function sum(a, b, fn) {
            // 利用回调函数,对具体的数据进行加工后再处理
            return fn(a) + fn(b);
        }

        let res = sum(2, 3, pow);      // 求 2和3的平方和
        console.log(res);
        // 匿名回调:只能调用一次

        console.log(sum(2, 3, function (num) {
            return Math.pow(num, 5);
        }));

        // 有名与匿名回调的优缺点

        // 有名:优点:可以反复回调,缺点:会一直占用内存

        // 匿名:优点:用后即焚,缺点:只能调用一次

对象

语法

let 变量 = {},空对象

对象里面的元素:属性,属性的组成与数组一样:由下标(属性名)和值组成(属性值),需要使用" : "分开

对象对比数组:拥有更强的语义性,属性名是字符串,数组的下标是数字

let obj = {
    name: "犬夜叉";
    age: 18;
    skill: "爆流破";
}

// 对象的特点1:属性名,可以使用引号

let obj1 = {
    "name": "犬夜叉";
    "age": 18;
    "skill": "爆流破";
}

// 对象的特点2:属性名,可以是数字

let obj2 = {
    0: "犬夜叉";
    1: 18;
    2: "爆流破";
}

// 对象的访问方式:

console.log(obj.name);
console.log(obj1["age"]);
console.log(obj2[2]);        //一般不会使用中括号的形式访问对象元素,某些特定的情况下,只能使用这个

// 有个变量

let i =1;

console.log(obj2.1);        // undefined
// 上面.语法不会把i当做变量解析,只会当做真正的属性名
console.log(obj2[i]);       // 只有中括号可以真正解析变量

遍历对象

/*
    for(let key in 对象){
        key自定义的变量:保存的是对象中的每个属性的名字
        访问对象的属性:对象[key]
    }
*/

for(let key in obj){
    console.log(obj[key]);   // 每个属性的属性值
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值