JavaScript 学习摘要(二) --- 函数

Posted by zhulinpinyu on February 29, 2016

原始参数&对象参数

原始值被作为参数传递给函数,也就是值传递给函数,如果被调用的函数改变了这个参数的值,这样的改变不会影响到全局或调用的函数。

如果你传递一个对象作为函数参数,而函数改变了这个对象的属性,这样的改变对函数外部是可见的。

嵌套函数&闭包

嵌套函数可以继承容器函数的参数和变量。即内部函数包含外部函数的作用域。

  • 内部函数只可以在外部函数中访问
  • 内部函数形成了一个闭包:它可以访问外部函数的参数和变量,但是外部函数却不能使用它的参数和变量

示例

function addSquares(a,b){
  function square(x){
    return x*x;
  }
  return square(a) + square(b);
}
a = addSquares(2,3); //13
b = addSquares(3,4); //25
c = addSquares(4,5); //41

闭包

当内部函数以某种方式被任何一个外部函数作用于访问时,一个闭包就产生了。

  • 避免内部函数变量名与外部函数变量名重名

[ES6]函数参数默认值

示例

function multi(a,b=1){
  return a*b;
}
multi(3); // 3

[ES6]剩余参数

剩余参数语法允许将不确定数量的参数表示为数组。

示例

function f1(a,...args){
  return args.map(x => a * x);
}
f1(2,3,4,5);//[6,8,10]

[ES6]箭头函数

更简洁的函数

示例

var a = ["Shenzhen","Hefei","Dongguan"];
var a1 = a.map(function(e){return e.length;});
var a2 = a.map(e => e.length);

参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Functions