JavaScript 函数


函数: 能实现某一特定功能的代码集合

1. 定义一个函数
function fn() { // 函数声明
    console.log(123);
}

fn(); // 函数调用
console.log(fn.name);  // 函数名字 fn
2. 函数参数

(1)形参实参个数一样

function fn(num) {
    console.log(num);
}

fn(123);

(2) 实参个数大于形参个数(多余的实参会被无视)

function fn(a, b) {
    console.log(a + b);
}

fn(1, 2, 3); //3

(3)形参个数大于实参个数(类似声明变量未定义)

function fn(a, b) {
    console.log(a + b);
}
// a = 1; b = undefined
fn(1); // NaN
4. arguments 实参列表

函数的形参与实参一一映射

function fn(a,b) {
    a = 3;
    console.log(arguments[0]); // 3
}
fn(1,2);
// fn.length  形参个数
// arguments.length  实参个数
5. 函数返回值 return

return作用: ①返回数据 ②结束函数

function fn(a, b) {
    return a + b
}

console.log(fn(1, 2)); //3
6. 递归

函数内部又调用了函数自身,我们把这种情况叫做递归
斐波那契数列就是经典的递归算法:

1、1、2、3、5、8、13、21、34、55、89、144、233……

function fib(n) {
    if (n == 1 || n == 2) {
        return 1
    }
    return fib(n - 1) + fib(n - 2)
}

for (var i = 1; i < 15; i++) {
    console.log(fib(i))

}
7. 函数表达式
var fn = function() {
    return 12;
}

console.log(fn());
8. 函数声明的提升(函数能正常执行)

JS在执行前,会有一个预解析的过程,把所有的函数声明,都提升到了最最开头,然后再执行第一行语句。

所以,function定义在哪里,都不重要,程序总能找到这个函数。

//先调用
fun();	
//然后定义
function fun(){
	console.log("我是函数,我执行了!");
}
9. 函数表达式提升

函数声明会被提升,但是函数表达式却不会被提升

函数表达式提升的是变量,变量提升后并不是一个函数,所以在表达式之前执行,会报错,为类型错误,因为不是函数.

fun();  //报错
var fun = function(){
    alert("我是函数,我执行了!");
}

例:

foo(); // 1
var foo;
function foo(){
    console.log(1);
}
foo = function(){
    console.log(2);
}
10. 自执行函数(函数表达式)

利用闭包原理
(1)方式一

+ function() {
    console.log(123)
}();

(2)方式二

- function() {
    console.log(123)
}();

(3)方式三

~ function() {
    console.log(123)
}();

(4)方式四

(function() {
    console.log(123)
})();
11. 函数声明和函数表达式

如果function是声明中的第一个单词,那么就是函数声明;否则就是函数表达式

12. 作用域

函数作用域 全局作用域

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值