函数
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('+'));