ES6 ---- 函数

2017-03-27  本文已影响0人  _by_w_z
function log(x, y = 'World') {
  console.log(x, y);
}
log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello
//如果参数的默认值是变量,那么每次都会重新计算默认值表达式
let x = 99;
function foo(p = x + 1) {
  console.log(p);           
}
foo() //100
x=100
foo() //101
function foo({x, y = 5}) {
  console.log(x, y);
}
foo({}) // undefined, 5
foo({x: 1}) // 1, 5
foo({x: 1, y: 2}) // 1, 2
foo() // TypeError: Cannot read property 'x' of undefined
//rest参数必须放在最后
function add(a,...values) {
  let sum = a;
  for (var val of values) {
    sum += val;
  }
  return sum;
}
add(2, 5, 3) // 10
var f = () => 5;
// 等同于
var f = function () { return 5 };
  1. 函数体内的this对象,是定义生效时所在的对象,而不是使用时所在的对象
  2. 不可以当做构造函数
  3. 不可以使用arguments对象,可以使用rest代替
  4. 不可以使用yield命令
function foo() {
  return () => {
    return () => {
      return () => {
        console.log('id:', this.id);
      };
    };
  };
}
//在此时定义生效,this则指向所在对象
var f = foo.call({id: 1});
var t1 = f.call({id: 2})()(); // id: 1
var t2 = f().call({id: 3})(); // id: 1
var t3 = f()().call({id: 4}); // id: 1
上一篇下一篇

猜你喜欢

热点阅读