JS函数

6. 函数

6.1. 函数定义:

普通函数定义

function f1() {
  console.log("Hello world!");
}

带参数的函数

function f2(a, b) {
  console.log(arguments);  // 内置的arguments对象
  console.log(arguments.length);
  console.log(a + b);
}


f2('Hello','World');
// (2) ["Hello", "World", callee: ƒ, Symbol(Symbol.iterator): ƒ]
//  2

带返回值的函数

function f3(a,b) {
    return (a + b);
}
var s = f3('Hi','Kitty');
console.log(s);    // HiKitty

匿名函数方式

var sum = function(a, b){
  return a + b;
}
sum(1, 2);      // 3

立即执行函数

(function(a, b){
  return a + b;
})(1, 2);           // 3

6.2 函数的全局变量和局部变量

局部变量:
在JavaScript函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它(该变量的作用域是函数内部)。只要函数运行完毕,本地变量就会被删除。

全局变量:
在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。

变量生存周期:
JavaScript变量的生命期从它们被声明的时间开始。
局部变量会在函数运行以后被删除。
全局变量会在页面关闭后被删除。

6.3 作用域

首先在函数内部查找变量,找不到则到外层函数查找,逐步找到最外层。

示例1:

var city = "BeiJing";
function f() {
    var city = "ShangHai";
    function inner(){
    var city = "ShenZhen";
    console.log(city);
    }
    inner();
}

f();  //输出结果是 ShenZhen

示例2:

var city = "BeiJing";
function Bar() {
    console.log(city);
}
function f() {
    var city = "ShangHai";
    return Bar;
}
var ret = f();
ret();  // 打印结果是 BeiJing

闭包:

var city = "BeiJing";
function f(){
    var city = "ShangHai";
    function inner(){
        console.log(city);
    }
    return inner;   
}
var ret = f();
ret();     // 打印结果是ShangHai
原文地址:https://www.cnblogs.com/zhzhlong/p/9302447.html