Javascript 函数
6.1 什么是函数及组成
-
语法
function name(参数1, 参数2, 参数3){ // 要执行的代码 }
-
示例
var a = 1, b = 2 function sum(){ return a * 10 + b }
-
注意
return
只能在函数里使用
6.2 形参与实参
-
形参
-
声明函数的时候定义的参数
function sum(a, b){ // a、b是形参 // 要执行的代码 }
-
-
实参
-
调用函数时候传的一个参数
sum(1, 2) // 1、2就是实参
-
-
特点
- 形参和实参是一一对应的
- 数量可以不对应
- 参数的类型不确定
- 函数可以设置默认参数
- 实参可以是字面量也可以是变量
6.3 声明的方法
-
声明方式
// 关键字直接声明 function a(参数){ // 执行语句 } // 匿名函数表达式赋给变量声明 var a = function(参数){ // 执行语句 } // 构造函数声明函数 var sum = new Function('a', 'b', 'return a + b') console.log(sum(1, 2))
6.4 返回值
- return的作用
- 返回值
- 中断函数
- 只能写在函数体里面
6.5 变量作用域
-
变量
-
全局变量
-
挂载到window对象上的
var a = '全局变量'; console.log(window.a); // 全局变量
-
-
局部变量
-
函数体内部声明的变量
function a(){ var b = 1 } console.log(b) // 报错:b is not defined // 函数内声明的局部变量外部不可访问
-
-
-
作用域链
- 内层函数是可以访问外层函数声明的每一个变量,反之则不可以
6.6 隐藏的参数arguments
-
arguments
arguments
是一个类数组对象,它有length
属性,可以通过索引访问每个参数,但它并不是一个真正的数组,因此不支持数组方法(如push
、pop
、map
等)。例如:function test(a, b) { console.log(arguments.length); // 输出传入的参数数量 console.log(arguments[0], arguments[1], arguments[2]); // 可以访问所有传入的参数 } test(1, 2, 3); // 输出:3,1 2 3
- 作用是用来取参的
- 传入的实参都能在函数体里通过arguments类数组取到
- 具有数组的一些特点
- 通过索引取参
- 有长度
6.7 立即执行函数
-
写法
// 第一种 (function(){ // 代码块 })(); // 第二种 (function({ // 代码块 })())
-
括号的作用
- 帮助我们调用函数
-
特点
-
匿名函数
-
自动执行
-
执行完成后自动销毁
-
可以传参数
(function(a, b){ console.log(a + b); })(1, 2); // 3
-
-
前面的语句必须加分号,否则会解析错误
// 假如没有分号 var x = 5 (function() { console.log("Hello!"); })(); // JavaScript 引擎会将这两行代码解析为: var x = 5(function() { console.log("Hello!"); })(); // 导致语法错误