JavaScript 函数通过 function 关键词进行定义,其后是函数名和括号 ()。
函数名可包含字母、数字、下划线和美元符号(规则与变量名相同)。
-
格式
function 函数名 (参数 1, 参数 2, 参数 3) { 要执行的代码 }
-
定义无参函数
function test() { console.log('输出') }
调用
test()
-
定义形参函数
function test(x, y) { console.log(x, y) }
调用
test(); test(1,2); test(1, 2, 3, 4);
-
定义形参函数并设置默认值
function test(x=1, y=2) { console.log(x, y) }
调用
test(3) test(3,4)
-
注意事项
- 函数调用不区分位置
- 形参个数可以大于实参个数
- 设置参数默认值
-
概述
js的函数可以通过表达式进行定义
函数存储在变量中
-
格式
var fun = fun([参数]){ 函数体 }
-
实例
var fun = function () { alert('弹框') } fun()
-
概述
- 函数可以使用自调用 也就是写完之后自己进行调用
- 如果表达式后面紧跟着() 则为自调用
-
实例
(function () { console.log('自调用函数') })()
- 函数调用不区分位置
- 形参个数可以大于实参个数
- 设置参数默认值
- 函数内部可以更改函数外部的全局变量
- 函数内部使用var定义的变量为局部变量 外部不能获取
- 函数内部不使用var定义的变量为 全局变量
实例
var num = 1;
function test() {
// num = 2;
// console.log(num);
age = 18 // 全局变量age
var age = 18 // 局部变量age 外部不能获取
console.log(age)
}
test()
// console.log(num)
console.log(age)
-
arguments 接收不定长参数
-
实例
function test() { // console.log(arguments) // console.log(arguments.length) for (var obj in arguments) { console.log(arguments[obj]) } } // test(); test(1,2,3,4,5);
-
实例
function test() { return 'val' console.log('输出') // 和Python一样 不在执行 } console.log(test());
-
注意
- 当函数体执行遇到return 下面代码不在执行
- return将值 返回给了函数调用处
- 闭包也就是发生在函数嵌套的时候 将函数体进行返回
- 函数内部可以修改外部的全局变量
function test1() {
function inner() {
console.log('inner')
}
return inner
}
inner = test1()
console.log(inner())
-
3.1
var count = 1; function add() { return count++ } count = 10 // 外部可以进行更改 console.log(add()); console.log(add());
-
3.2
function add() { var count = 1; function inner() { return count++ } return inner } add = add() console.log(add()); console.log(add()); console.log(add()); console.log(add());
-
3.3
var add = function () { var count = 1; return function () {return count++} }(); console.log(add()); console.log(add());