SOURCE

// 参数

// 函数传参,结构赋值
// function fn({a,b,c}) {
//   console.log(a); // 1
//   console.log(b); // 2
//   console.log(c); // 3
// }
// fn({a:1,b:2,c:3});

// 参数默认值,注意:有默认值的参数放到后面
// function fn({a,b=2,c=3}) {
//   console.log(a); // 1
//   console.log(b); // 2
//   console.log(c); // 3
// }
// fn({a:1});

// function fn({a,b=2,c=3}) {
//   console.log(a); // 1
//   console.log(b); // 4
//   console.log(c); // 5
// }
// fn({a:1,b:4,c:5});

// 函数 length 属性 返回函数形参个数 实参个数由 arguments 类数组记录
// function fn() {}
// console.log(fn.length); // 0

// function fn(a,b) {
//   console.log(arguments.length); // 3
// }
// fn(1, 2, 3);
// console.log(fn.length); // 2,fn.length 记录的是函数形参的个数

// 函数作用域
// 当函数的形参有默认值时
// let a = 1;
// function fn(a, b=a) {
// 	console.log(b);  // 1
// }
// fn(1);

// let a = 1;
// function fn(b=a) {
//   let a=3;
// 	console.log(b);  // 1
// }
// fn();// let a = 1;

// let a=2;
// function fn(a, b=function(){a=3}) {
//   var a=4;
//   b();
// 	console.log(a);  // 4
// }
// fn();
// console.log(a); // 2

// let a=2;
// function fn(a, b=function(){a=3}) {
//   a=4;
//   b();
// 	console.log(a);  // 3
// }
// fn();
// console.log(a); // 2

// rest参数 用来接收多余实参 注:rest参数必须写在最后一个
// function fn(a,b,...args) {
//   console.log(arguments.length); // 6
//   // let arr = [].slice.apply({}, arguments);
//   // console.log(arr)
//   console.log(a); // 1
//   console.log(b); // 2
//   console.log(args);
//   args.push(7);
//   console.log(args);
// }
// fn(1,2,3,4,5,6)

// 函数 name
// function fn() {}
// console.log(fn.name); // fn

// let fn = function() {}
// console.log(f.name); // fn

// let f = function fn() {}
// console.log(f.name); // fn

// 箭头函数
// es5
// let f = function() {
//   return 1;
// }
// console.log(f()); // 1

// es6 箭头函数
// demo1
// let fn = () => 1; // ()代表函数接收的参数,1代表返回值
// console.log(fn()); // 1

// let fn = function(a) {
//   return ++a;
// }
// console.log(fn(10));

// let fn = a => ++a;
// console.log(fn(10)); // 11

// let a = 10;
// let fn = function(a) {
//   let b = 5;
//   a += b;
//   return a;
// }
// console.log(fn(a)); // 15

// let a = 10;
// let fn = a => {
//   let b = 5;
//   a += b;
//   return a;
// }
// console.log(fn(a)); // 15


// let add = (a,b) => a+b;
// console.log(add(5,10)); // 15

// 箭头函数使用注意事项
// () => {}
// 1.如果只有一个参数,()可以省
// 2.如果只有一个return,{}可以省
// 3、箭头函数内部 this 指向由定义,被固定指向父级作用域
// 4、不能用来作为构造函数
// 5、没有 arguments,如果一定要用 arguments,可使用 rest 参数代替

// var num = 1;
// function fn() {
//   var num = 2;
//   setTimeout(() => console.log(this.num), 1000); // 1
// }
// fn();

// var num = 1;
// function fn() {
//   var that = this;
//   console.log(that); // [object Window]
//   var num = 2;
//   setTimeout(function() {
//     console.log(that.num); // 1
//   }, 1000);
// }
// fn();

// var num = 1;
// function fn() {
//   var num = 5;
//   setTimeout(() => console.log(this.num), 1000); // 8
// }
// fn.call({num: 8});

// let fn = () => console.log(this); // [object Window]
// fn.call({});

// var fn = function() {
//   console.log(this); // [object Object]
// }
// fn.call({});



































console 命令行工具 X clear

                    
>
console