web前端开发JavaScript基础-核心原理-项目实战(day3)函数的相关补充:变量与属性名的区别、任意数求和、箭头函数

函数
arguments函数内置的实参集合
    任意数求和(执行函数的时候,传递N个值实现求和)
```
/*
 *任意数求和:
 *  1.传递实参的个数不定
 *  2.传递的值是否为有效数字
 *  =>把传递的有效数字进行相加求和
 * 
 * arguments:函数内置的实参集合
 *  1.类数组集合,集合中存储着所有函数执行时,传递的实参信息
 *  2.不论是否设置形参,arguments都存在
 *  3.不论是否传递实参,arguments也都存在
 * arguments.callee:存储的是当前函数本身(一般不用,JS严格
模式下禁止使用这些属性)
 */
function sum() {
    // console.log(arguments);
    let total = null;
    for (let i = 0; i < arguments.length; i++) {
        //获取的每一项的结果都要先转换为数字(数学运算)
        let item = Number(arguments[i]);
        //非有效数字不加
        if (isNaN(item)) {
            continue;
        }
        total += item;
    }
    return total;
}

let total = sum(10, 20, 30, 40);
console.log(total);

total = sum(10, 20);
console.log(total);

total = sum(10, 20, '30');
console.log(total);

total = sum(10, 'AA');
console.log(total);
```
#### arrow function箭头函数
> 简单
```
/* function sum(n, m) {
    return n + m;
} */

//改写为箭头函数
/* let sum = (n, m) => {
    return n + m;
};
//如果函数体只有一行return,可以省略return和大括号
let sum = (n, m) => n + m;

console.log(sum(10, 20)); */

/* function fn(n) {
    return function (m) {
        return n + m;
    }
}*/
// 改箭头函数
let fn = n => m => n + m; 

/* function sum(n, m) {
    if (typeof n === 'undefined') {
        n = 0;
    }
    if (typeof m === 'undefined') {
        m = 0;
    }
    return n + m
}*/
//改箭头函数
//形参赋值默认值:当没有给形参传递实参的时候,执行默认值
let sum = (n = 0, m = 0) => n + m; 
sum();
sum(10);

```
### 箭头函数中没有arguments
```
/* let sum=(...arg)=>{
    //可以使用剩余运算符获取到传递的实参集合(他是数组,比
arguments更方便)
    console.log(arg);
} */

//任意数求和
let sum =(...arg)=>eval(arg.join('+'));

```
箭头函数中的this某些场景也方便操作

····
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>任意数求和</title>
</head>
<body>
    <script src="js/3-箭头函数.js">

    </script>
</body>
</html>

//变量与属性名的区别
/* var name=10;
var obj={
    name:'哆啦A梦',
    10:1000,
};
//获取obj这个对象的name属性对应的值
console.log(obj.name);//=>哆啦A梦
//一个对象的属性名只有两种格式:数字或者字符串(等基本类型值)
console.log(obj['name']);//=>哆啦A梦
//obj[name变量代表的值]
console.log(obj[name]);//=>1000

//  'age'值->代表本身
// age 变量->代表它存储的这个值  */

/* var name = '哆啦A梦';
var obj = {
    //name :'哆啦A梦'
    //属性名:属性值(放的是变量也是把变量存储的值拿过来做属性值)
    // name: name,
    name,//=>ES6的简化和name: name一样
    age: 1 === 1 ? 100 : 200
}; */

//for in循环:用来遍历对象中的键值对的(continue和break同样适用)
var obj={
    name:'张三',
    age:26,
    friends:'李四,王五',
    1:100,
    2:200,
    3:150
};
// obj.friends
// obj['friends']
//for(var 变量(key) in 对象)
//对象中有多少键值对,循环就执行几次(除非break结束)
for(var key in obj){
    //每一次循环key变量存储的值:当前对象的属性名
    //获取属性值:obj[属性名]=>obj[key]  obj.key/obj['key']
    console.log('属性名:'+key+'属性值:'+obj[key]);
    /* console.log(key);
    console.log(obj[key]); */
}
//for in在遍历的时候,优先循环数字属性名(从小到大)
/*
 *任意数求和:
 *  1.传递实参的个数不定
 *  2.传递的值是否为有效数字
 *  =>把传递的有效数字进行相加求和
 * 
 * arguments:函数内置的实参集合
 *  1.类数组集合,集合中存储着所有函数执行时,传递的实参信息
 *  2.不论是否设置形参,arguments都存在
 *  3.不论是否传递实参,arguments也都存在
 * arguments.callee:存储的是当前函数本身(一般不用,JS严格模式下禁止使用这些属性)
 */
function sum() {
    // console.log(arguments);
    let total = null;
    for (let i = 0; i < arguments.length; i++) {
        //获取的每一项的结果都要先转换为数字(数学运算)
        let item = Number(arguments[i]);
        //非有效数字不加
        if (isNaN(item)) {
            continue;
        }
        total += item;
    }
    return total;
}

let total = sum(10, 20, 30, 40);
console.log(total);

total = sum(10, 20);
console.log(total);

total = sum(10, 20, '30');
console.log(total);

total = sum(10, 'AA');
console.log(total);
//箭头函数
/* function sum(n, m) {
    return n + m;
} */

//改写为箭头函数
/* let sum = (n, m) => {
    return n + m;
};
//如果函数体只有一行return,可以省略return和大括号
let sum = (n, m) => n + m;

console.log(sum(10, 20)); */

/* function fn(n) {
    return function (m) {
        return n + m;
    }
}
// 改箭头函数
let fn = n => m => n + m; */

/* function sum(n, m) {
    if (typeof n === 'undefined') {
        n = 0;
    }
    if (typeof m === 'undefined') {
        m = 0;
    }
    return n + m
}*/
//改箭头函数
//形参赋值默认值:当没有给形参传递实参的时候,执行默认值
// let sum = (n = 0, m = 0) => n + m; 

/* let sum=()=>{
    console.log(arguments);//=>Uncaught ReferenceError: arguments is not defined箭头函数中没有arguments
}; */

/* let sum=(...arg)=>{
    //可以使用剩余运算符获取到传递的实参集合(他是数组,比arguments更方便)
    console.log(arg);
} */

//任意数求和
let sum =(...arg)=>eval(arg.join('+'));






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值