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