JavaScript中的Function类型及函数、匿名函数等

达梦数据库集群部署(主备) 阅读详情

函数与Function的关系:每个函数都是Funtion类型的实例,而且都与其他引用类型一样具有属性和方法。由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定。

函数的定义方式

1.函数声明

以关键字function开始,后面跟随函数名称标识符、一对圆括号(包含有0个或多个用逗号隔开的函数参数名称)和一对花括号(包含0条或多条JS语句,构成函数体)。解析器在向执行环境中加载数据时,在代码执行前就被解析器加载到作用域中,这个特性可以让我们在函数定义之前就调用该函数。

    console.log(sum(10,10));  //20
    function sum (num1,num2){
        return num1+num2
    }

2.函数表达式

与函数声明一样,函数表达式也用到了关键字function。声明一个变量,采用变量赋值的方式,将一个匿名函数赋给这个变量。用这种方式定义函数时,没有必要声明函数名,因为通过声明的变量即可引用函数。值得注意的一点,根据变量赋值语句的语法规则,需要在赋值结束后在末尾加上分号(;),因此在用函数表达式定义函数时候,要记得在末尾加上分号。注意,与函数声明不同的是,函数表达式必须等到解析器解析到代码段之后才能进行调用,否则会报错。

    console.log(sum(10,10));  //Uncaught TypeError: sum is not a function
    var sum= function (num1,num2) {
        return num1+num2
    };

3.Function()构造函数

   Function()构造函数可以传入任意数量的字符串实参,最后一个实参所表示的文本是函数体,可以包含任意数量的JS 语句。如果构造的函数不包含任何参数,则只需要传入一个函数体即可,与前两者方式不同的是,Function()构造函数允许JavaScript在运行时动态地创建并翻译函数。每次调用Function()构造函数都会解析函数体,并创建新的函数对象。因而,在循环或多次调用的函数中执行这个构造函数,执行效率会受影响。

 var sum = new Function("x","y","return x+y"); 

JS中函数没有重载

如果声明了两个同名函数,则后面的函数会覆盖前面的函数。

函数的内部属性

在函数的内部,有两个特殊的对象:arguments和this

 1.arguments是一个类数组对象,包含着传入函数的所有参数。它有一个callee属性,该属性是一个指针,指向拥有这个arguments对象的函数,常用于阶乘函数。

function factorial (num) {
        if(num<=1){
            return 1;
        }else{
            return num * arguments.callee(num-1);
        }
    }

 2.this引用的是函数执行的环境对象。当在网页的全局作用域中调用函数时,this对象引用的就是window

    window.color="red";
    var o={color:"blue"};
    
    function sayColor(){
        alert(this.color);
    }
    
    sayColor();   //red
    o.sayColor=sayColor;
    o.sayColor(); //blue

ECMAScript5也规范化了另一个函数对象的属性:caller。这个属性保存着调用当前函数的函数的引用,如果是在全局作用域中调用当前函数,它的值就为null。

    function outer() {
        inner();
    }
    function inner(){
        alert(arguments.callee.caller);
    }
    outer();

执行以上代码将输出outer()函数的源代码

函数属性和方法

函数也是对象,因此函数也有属性和方法。

每个函数包含两个属性:length 和 prototype。

  • length属性表示函数希望接受的命名参数的个数。
  • prototype属性是保存他们所有实例方法的真正所在。

每个函数包含两个非继承而来的方法:apply( )和call( )。

都是在特定的作用域里调用函数,相当于是设置函数体内的this对象的值。

  • apply( )接收两个参数,一个是在其中运行函数的作用域,另一个是参数数组(可以是Array的实例,也可以是arguments对象)
  • call( )与apply( )方法的作用相同,区别仅在于接收参数的方式不同。第一个参数是this值没有变化,变化的是其余参数都直接传递给函数。换句话说,在使用call( )方法时,传递给函数的参数必须逐个列举出来。​​​​​​​
    function sum (num1,num2){
        return this.a+this.b+num1+num2;
    }
    var s={
        a:1,
        b:2
    };
    console.log(sum.apply(s,[3,4]));  //10
    console.log(sum.call(s,3,4));     //10

 

 

匿名函数

1.调用方式(匿名函数立即执行)

(function () {

})();
    var f = (function () {
 
    })();
    //这样写小括号可以不要,如下
    var f = function () {

    }();

2.模仿块级作用域

    (function () {
        //这里是块级作用域
    })();

 

AUTOSAR EcuM模块介绍 AUTOSAR EcuM概述 AUTOSAR EcuM全称是Autosar ECU State Manager,位于Autosar BSW中System Service模块中,是一个独立于硬件的模块。 其主要作用是管理ECU上下电启动的状态,具体为: 初始化启动操作系统所需要的BSW(Basic Software)模块 为睡眠阶段和随后的唤醒完成微控制器的配置准备 管理ECU上的所有唤醒事件(EcuM通过唤醒验证协议验证已发生的唤醒,区分真实的唤醒事件,防止误唤醒) EcuM支持的特性列表 EcuM具有 阅读详情

相关推荐

MiniOSD DIY记

最近迷上了航模,研究了很多东西,感觉路走的长了还是适当要停下脚步休息下总结下。 这次DIY的是一块OSD设备,主要用于航模图传的叠加显示,原理也很简单就是atmel atmega328p+MAX7456芯片,网上卖的成品基本上都是一个原理图。 原理图 我按照我自己的需要做了适当的更改,去掉了DC-DC电路,直接用5V输入,因为摄像头都是5V的,所以DC-DC不是很有必要,体积上更加小了点, 打...

memoff的博客 8530

JavaScript-函数(Function)

JavaScript函数(Function)

StupidlyGrass的博客 5520

opencv的cmake报错

1、下载 ippicv_2021.8_win_intel64_20230330_general.zip、v0.1.2a.zip、opencv_videoio_ffmpeg.dll、opencv_videoio_ffmpeg_64.dll、ffmpeg_version.cmake。由于下载源在https://raw.githubusercontent.com,由于网络原因下载不顺畅,可以先找到文件下载到对应文件夹下,或者更改网络环境。ffmpeg_version.cmake文件,打开后显示如下, 另存即可。

nownow_的博客 1299

菜鸟教程 之 JavaScript 函数(function)

From:https://www.runoob.com/js/js-function-definition.html JavaScript函数定义 JavaScript 使用关键字function定义函数。 函数 可以 通过声明定义,函数 也可以 是一个表达式。 函数声明 分号 是用来分隔可执行 JavaScript 语句。 由于...

墨鱼菜鸡 4068

目标检测之Mask R-CNN(Pytorch):小白动手实现项目

目标检测之Mask R-CNN:小白动手实现项目Pytorch引言Mask R-CNN原理简述代码、注释及详细解释 引言 首先声明本项目的运行环境。操作系统为Windows,编写环境为Anaconda3 + Jupyter Notebook。Pytorch版本为 torch 1.7.1+cu110 、torchvision版本为 0.8.2+cu110,cuda版本为cu100,显卡为Nvidia 2060。 我是目标检测领域的小白,刚刚完成了Pytorch的相关入门学习任务,所以我认为学习本篇博客的基础

dzc_go的博客 1万+

【论文+代码】ZS-N2N实现小样本零网络图像去噪

本文涵盖论文原文讲解与代码复现。

weixin_46287760的博客 4002

【JavaScript】 函数 function

也就是说,传入函数的原始值的地址,因此在函数内部修改参数,将会影响到原始值。函数参数不是必需的,JavaScript 允许省略参数,但是,没有办法只省略靠前的参数,而保留靠后的参数。只要闭包没有被垃圾回收机制清除,外层函数提供的运行环境也不会被清除,它的内部变量就始终保存着当前值,供闭包读取。它的作用域与变量一样,就是其声明时所在的作用域,与其运行时所在的作用域无关。如果函数内部修改的,不是参数对象的某个属性,而是替换掉整个参数,这时不会影响到原始值。所以,闭包可以看作是函数内部作用域的一个接口。

小数点儿_ 3441

群晖NAS下docker安装MySql

本文将一步一步讲解如何在群晖NAS的docker中启用一个MySQL容器 , 算是初学者对问题解决的一个记录.

qq_46375248的博客 5978

JavaScript的函数(function)

目录 函数的基本概念 概念: 理解: 优点: 函数的基本语法 声明式: 赋值式: 调用: 函数的参数 一个参数时 多个参数时 函数的返回值 函数的返回值return 简单的理解return 为什么要有return return的作用 函数的基本概念 概念: 实现功能效果的代码块 理解: 将需要的程序,封装定义在一个函数中,通过调用函数调用相对应的程序。 优点: 封装一次。多次调用,有更好的可操作性和可维护性。 函数的基本语法 声明式: ...

qq_45799465的博客 6628

RT-DETR改进策略【Conv和Transformer】| HiLo注意力机制 通过分离处理图像的高频和低频信息,高效处理图像特征

本文记录的是利用改进检测模型,针对目标检测中面临的多尺度特征融合效率与长距离依赖建模难题,HiLo注意力模块的引入旨在通过频率解耦策略优化高分辨率特征处理,将高频细节(如目标边缘)与低频语义(如场景结构)分离建模,提升目标检测精度。Fast Vision Transformers with HiLo AttentionHiLo注意力模块的提出源于对传统自注意力机制局限性的反思。传统多头自注意力(MSA)在处理高分辨率图像时存在以下问题:HiLo将注意力模块分为高频(Hi-Fi)和低频(Lo-Fi)两个分支,

Limiiiing的博客 818

图解电动汽车:电动汽车电控系统

电动汽车的电控系统通常包含三个子控制系统 —— 整车控制器、电池管理系统、驱动电机控制器。 整车控制器 VCU 整车控制器 VCU(Vehicle Control Unit)作为电动汽车的中央控制单元,是整个控制系统的核心,也是各个子系统的调控中心。VCU 的主要功能就是协调管理整车的运行状态,包括采集电机及电池状态,采集加速踏板信号、制动踏板信号、执行器及传感器信号,根据驾驶员的意图综合分析做出相应判定后,监控下层的各部件控制器的动作,它负责汽车的正常行驶、制动能量回馈、整车发动机及动力电池的能量管理、.

程序员「阿基米东」的编程之旅 1万+

javascript中function详解

js,function, 函数,函数详解,函数内部参数

forgiveForever的博客 9117

【Python LeetCode 专题】面试经典 150 题

面试经典 150 题

一杯水果茶!足矣~ 1173

[Javascript]:JS数据类型、类型判断、函数function与Function的使用

因为之前学过Java,在学习JS时,对JS的数据类型、function和Function的使用概念容易搞混淆,理解不怎么深刻。遂将这些知识点和概念梳理一遍,以便自己和他人理解。如有错误,敬请谅解。       知识点会涉及到:JS数据类型、JS的类型判断方式、函数创建方式、function与Function的区别、匿名函数的使用、函数特点以及函数重载问题。 Javascript数据类型

我只是个程序员。 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

49 JS-3 function 对象,基本数据类型 对象的定义 匿名函数

1 在JavaScript中,函数(function)就是对象。 2 在JavaScript中,没有方法(函数)重载的概念。 3 在JavaScript中有一个Function对象,所有自定义的函数都是Function对象类型的。Function对象接收的所有参数都是字符串类型的,其中最...

chunhuo3827的博客 130

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

49 JS-3 function 对象,基本数据类型 对象的定义 匿名函数

在JavaScript中,函数(function)就是对象。 在JavaScript中,没有方法(函数)重载的概念。

惟愿无事 558

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JavaScript 进阶笔记

JavaScript 进阶 个人博客地址:https://blog.3xnb.com 个人码云地址:https://gitee.com/xiaojinx9/ren_chunjin/ 面向对象 概述 面向对象编程的全称为Object Oriented Programming,简称为OOP。 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式。 面向对象编程可以看作是使用一系列对象相互协作的软件设计。 面向对象程序设计的目的是在编程中促进更好的灵活性和可维护性。 凭借其对模块化的重视,面向

Jine 3649

java web之javascript(js)解析

java web javascript(js): javascript(js): js嵌入在html中,在浏览器中运行的脚本语言 js跟java没有任何关系,只是语法相似 是一种网页的编程技术,用来向html页面添加交互行为 由浏览器解释执行代码,不进行预编译 javascript特点: -可以用任何编译文本的工具编写js代码 -由浏览器内置的...

jinqizhe的博客 1189

Function类型

概述 Function与函数 函数是这样的一段JavaScript代码,它只定义一次,但可能被执行或调用多次。 Function类型是JavaScript提供的引用类型之一, 通过Function类 型创建Function对象。 在JavaScript中,函数也是以对象的形式存在的。每个函数都是一个Function对象。 函数名,本质就是一个变量名, 是指向某个Function对象的引用。 function fn(){ console.log("小狗家族'); } console.log(fn instan

qq_46670991的博客 3161

JS面向对象Function类型

Function类型 Function类型与函数 函数时这样的一段JavaScript代码,它只定义一次,但可能被执行或调用多次 Function类型是JavaScript提供的引用类型之一,通过Function类型创建Function对象。 在JavaScript中,函数也是以对象的形式存在的。每个函数都是一个Function对象。 函数名,本质就是一个变量名,是指向某个Function对象的引用 代码: //函数声明方式定义 function fn(){ console.log('this is

weixin_46156304的博客 395

学习笔记分享-快速掌握前端-js-数据类型-function-定义、参数、匿名函数、箭头函数、函数是对象

学习笔记分享-快速掌握前端-js-数据类型-function-定义、参数、匿名函数、箭头函数、函数是对象

2301_81243975的博客 702

JavaScript函数详解

JavaScript函数详解 JavaScript代码复用单位是函数,函数可以包含一段可执行代码,也可接受盗用者传入的参数。JavaScript定义函数主要有三种方式: 1.命名函数 <script type="text/javascript"> function /*函数名*/(/*参数列表*/){ //要执行的语句块; } //示例: function show(aaa){ a...

zhangjx1213的博客 191

JavaScript面向对象编程——Function类型

Function类型 Function与函数 函数它只定义一次,但可能被执行或调用多次 。Function类型是JavaScript提供的引用类型之一,通过Function类型创建Function对象。在JavaScript中,函数也是以对象的形式存在的。每个函数都是一个Function对象。函数名,本质就是一个变量名,是指向某个Func...

weixin_34067049的博客 159

JavaScript面向对象中的Function类型个人分享

Function类型 Function与函数的概念 函数这样的一段JavaScript代码,它只定义一次,但是可能被执行或调用多次 Function类型是JavaScript提供的引用类型之一,通过Function类型创建Function对象 在JavaScript中函数也是对象的形式存在. 注意: 每个函数都是以个Function对象...

weixin_33978016的博客 164

简述Function类型

Function类型 概述 Function与函数 函数是这样的一段JavaScript代码,她只定义一次,但是可能被执行或调用多次。Function类型是JavaScript提供的引用类型之一,通过Function可u需变更创建对象。在JavaScript中,函数也是以对象形式存在的。每一个函数都是一个Function对象。函数名,本质...

weixin_33910434的博客 240

js的函数几种定义

1、function 名字(命名函数) function fn() { ... } 2、函数表达式(匿名函数) var f=function() { ... } 3、new Function(‘形参1’,‘形数2’,‘函数体’) var f=new Function('a','b','console.log(a+b)'); //定义函数 f(1,2); //调用函数 ...

胡图图不糊涂的博客 258
上一篇: JavaScript中的变量
下一篇: 深入理解JavaScript的执行环境、作用域与作用域链及闭包
Eternal_tyq
博客等级 码龄9年 13粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值