JS-函数详解

本文详细解析JavaScript函数的创建方式,包括使用`new Function`、函数声明和函数表达式。讲解了参数、返回值、构造函数的概念,以及如何将函数作为对象属性和方法调用。涉及的关键知识点有:函数对象、构造函数、原型链和匿名函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JS-函数

函数
-函数也是一个对象
-普通对象就像一容器 他只能装填属性
-函数可以封装一些功能代码,在需要的时候执行这些功能代码
创建一个函数对象(实际开发并不采用)

var fun=new Function ();
console.log(fun);
//使用typeof 检查一个函数对象时,会返回function
console.log(typeof fun);

可以将封装的代码以字符串的形式传递给构造函数

var fun=new Function("conslog.log('hello')");
//封装到函数中的代码不会立即执行,会在函数调用时执行
//调用
fun();

使用函数声明来创建一个函数
语法:
function 函数名(形参1,形参2){
函数体
}
调用:
fun()

function fun(){
    console.log('hello');
}
fun();

使用函数表达式来创建一个函数
语法:
var 函数名=function ([形参1,形参2]){

};

var fun=function (){
    console.log("这是一个匿名函数")
}
fun();

函数的参数

定义一个函数可以在函数的()中指定一个或者多个形参(形式参数)
多个形参之间,隔开,声明形参就相当于在函数内部声明了对应的变量
但是并不复制

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

在调用时,可以在()中指定实参
实参将会赋值给函数中对应的形参

function fun(a,b){
    console.log(a+b);
}
fun(1,2);//3

函数的返回值

可以使用return来设置函数的返回值
语法:
return 值
return后的值将会作为函数的执行结果返回
我们可以定义一个变量来接受这个返回值

function fun(a,b,c){
    var d=a+b+c;
    return d;
}
/*
调用函数
变量resulet的值就是函数的执行结果
函数返回什么result的值就是什么
 */
var result=fun(1,2,3);
console.log(result);//6

使用return还可以结束整个函数

function fn(){
    for(var i=0;i<5;i++){
        //退出当前的循环
        break;
        //contionue跳过当次循环
        continue;
        //结束整个函数,后边语句都不执行
        return;
    }
    console.log("hello");
}

返回值可以是任意数据类型
可以是一个对象可以是一个函数

/*
返回对象
 */
function fun(){
    var obj={
        name:"小阿涵"
    }
    return obj;
}
var a=fun();
console.log(a.name);
/*
返回函数
 */
function fun(){
    function fun1(){
        alert("内部");
    }
    return fun1();
}
var a=fun();
console.log(a);

匿名函数

(function (){
    alert("匿名函数");
})

立即执行函数

立即执行函数:函数定义完,立即被调用,这种函数叫做立即执行函数
往往只能执行一次

(function (){
    alert("立即执行函数")
})();//后边括号内传参

构造函数

构造函数就是一个普通的函数,创建方式也与普通函数一样,就是一个创建对象的函数
不同的是构造函数习惯将首字母大写
不同的是两者的调用方式不一样
-普通函数可以直接调用
-构造函数需要使用new关键字来调用
构造函数的执行流程:
1.立刻创建一个新的对象
2.将新建的对象设置为函数中this,在构造函数中可以使用this来引用新建的对象
3.逐行执行函数的代码
4.将新建的对象作为返回值返回
使用同一个构造函数创建的对象,我们称为一类对象,也将一个构造函数称为一个类

function Person(name,age,sex){
    this.name=name;
    this.age=age;
    this.sex=sex;
}
var per=new Person("小阿涵",24,"男");
console.log(per);//输出 Person{name="小阿涵",age=24,sex="男"}

使用instanceof可以检查一个对象是否是一个类的实例
语法:
对象instanceof构造函数
如果是,则返回true,否则false

console.log(per instanceof Person);

补充

函数可以称为对象的属性
如果一个函数作为一个对象的属性保存
那么这个函数是我们对象的方法
调用函数就等于调用对象的方法

//创建对象
  obj=new Object();
//添加属性
obj.name="小阿涵";
obj.age=24;
//对象中的属性可以是任意数据类型,可以是一个函数
obj.sayName=function (){
  console.log(obj.name);  
};
function fun(){
    console.log(obj.name);
};
//调用方法
obj.sayName();//输出 小阿涵
//调用函数
fun();//输出 小阿涵

因此类似的例子:
console.log() 就是在调用console的log方法
document.write() 就是在调用document的write方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值