js引用数据类型(函数)

函数:一段代码块,一般一个功能就会封装成一个代码块,可以重复使用。

创建函数

// 使用function关键字来创建一个函数
function 函数名(){
	// 具体功能的代码实现
}

// 函数不会自己执行,需要调用
函数名();
function fun(){
	console.log(123);
}

fun(); // 打印123

形参和实参

函数名后小括号内传递的参数

// 声明函数时传递的参数叫做形式参数--形参
function add(x,y){
	console.log(x+y);
}

// 调用函数时传递的参数叫做实际参数--实参
add(1,2);   // 打印3

// 多余的实参会被忽略
add(1,2,3); // 打印3

// 多余的形参默认为undefined
add(1);     // 打印NaN

形参默认值

// 如果没有传递实参,则形参使用默认值
function add(x=10){
	console.log(x);
}

add(); // 打印10

返回值

// 使用 return 关键字返回一个表达式或者函数
function add(x,y){
    const sum = x+y;
    return sum;
}
let result = add(1,2);
console.log(result); // 打印3
// return会让函数提前结束调用(在函数内return后面的代码不执行)
function fun(){
    return;
    console.log('haha'); // 不打印
}
fun();

return xxx 不能换行,否则返回值为undefined

一个函数没有 return,默认返回undefined

arguments

arguments是一个伪数组,函数内部的一个内置对象,用来接收所有实参

伪数组:可以使用[下标]对元素进行操作,但不能使用数组的方法

function fun(a,b){
    console.log(arguments);
}
fun(1,2);    // [1,2]

封装函数

我们通常将不同功能封装成一个函数,下面是一个例子,功能与indexOf方法相同

// 判断某个元素是否存在于数组中,存在则返回该元素下标,不存在则返回-1
function findEleInArray(ele,arr){
    for(let i=0;i<arr.length;i++){
        if(arr[i] === ele){
            return i;
        }
    }
    return -1;
}
const arr = [1,2,3,4,5];
findEleInArray(3,arr); // 值为2
findEleInArray(6,arr); // 值为-1

匿名函数

匿名函数:没有名字的函数,又叫函数表达式(有名字的函数:具名函数)

// 变量fn指向函数(这个函数就是一个匿名函数)
const fn = function(){
    console.log('hello');
}
fn(); // 打印hello

具名函数与函匿名函数的区别

f1();
function f1(){} // 具名函数可以先调用,后声明

f2(); // 报错
const f2 = function(){} // 函数表达式必须先声明,后调用

// js代码在执行的时候,分为预解析和代码执行
// 预解析:把变量和函数声明拿到代码的最前面
// 预解析不会把const或let定义的进行提升

匿名函数自调用

IIFE (Immediately Invoked Function Express)

匿名函数自调用 / 自执行匿名函数

该函数在定义时就会执行一次

// 第一种写法
(function(){
    console.log(1);
})();

// 第二种写法
(function(){
    console.log(1);
}());

IIFE同样可以传参数 

let num = 10;
(function(a){
    console.log(a); // 打印10
})(num);

作用:防止变量全局污染

// 由于函数作用域,两个num互不影响
var num = 10;
(function(){
    var num = 20;
})()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值