js学习笔记-函数表达式

latex使用overleaf插入多行图片 对于一般的latex模板,可以使用下面方式: (1)现在模板最前面的加入包 \usepackage{graphicx} \usepackage{subfigure} (2) 使用下面代码插入图片 \begin{figure}[htbp] \centering \subfigure[pic1.]{ \includegraphics[width=5.5cm]{pic1.png} } \quad \subfigure[pic2.]{ \includegraphics[width=5.5cm]{pic 阅读详情

函数表达式

1:函数的两种形式

1:函数声明,类似于大多数语言(c/c++/java/php)。

function fun(name, age){
    var qinjie = name + age;
    return qinjie; 
}

2:函数表达式,创建一个函数变量并将其值赋给某个变量。这种产生的函数也称为”匿名函数”

var fun = function(name, age){
    var qinjie = name + age;
    return qinjie;
}

2:递归

1:直接仿照其他语言形式塑造递归。js中,函数名可被赋值更改,可能导致出错。推荐使用第二种方法

function factorial(num){
    if(num > 1){
        return factorial(num-1)*num
    }
    else{
        return 1;
    }
}

2:使用arguments.callee,指向正在执行的函数指针

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

3:闭包

闭包,简单的说就是函数里面的函数,它的作用域不仅包含自己,还包含父函数的作用域。闭包会比其他的函数占用更多的内存。

    function test(){
        var name = "qinjie";
        var age = 21;
        var getName = function(){
            alert(name);
            name = "daimeng";
            return name;
        };
        alert("name="+getName());
    }
    test();

2:闭包只能取得包含函数中变量的最后一个值。会导致出错

            function createFunctions(){
                var result = new Array();

                for (var i=0; i < 10; i++){
                    result[i] = function(){
                        return i;
                    };
                }

                return result;
            }

            var funcs = createFunctions();
            alert(funcs);

            //每次输出都是10
            for (var i=0; i < funcs.length; i++){
                document.write(funcs[i]() + "<br />");
            }

模仿块级作用域

1:在js中,没有块级作用域的概念。在块语句中定义的变量,实际上是在函数中创建的。例如循环,判断等语句中创建的变量,会在整个函数中有效。模仿块级作用域,可以减少内存占用

             //未使用块级作用域  
            function outputNumbers(count){
                for (var i=0; i < count; i++){
                    alert(i);
                }

                var i;    //再次定义变量
                alert(i);   //5
            }

            outputNumbers(5);
            //使用块级作用域
            function outputNumbers(count){

                (function () {
                    for (var i=0; i < count; i++){
                        alert(i);
                    }
                })();

                alert(i);   //出错
            }

            outputNumbers(5);

私有变量

1:方式一,使用构造函数模式+闭包。缺点,因为使用构造函数模式,每次创建新的实例,都会创建新的方法(浪费内存)。

            function Person(name){

                this.getName = function(){
                    return name;
                };

                this.setName = function (value) {
                    name = value;
                };
            }

            var person = new Person("qinjie");
            alert(person.getName());   //"qinjie"
            person.setName("daimeng");
            alert(person.getName());   //"daimeng"

2:使用原型模式+私有作用域。缺点:多个实例共用同一个方法和变量。

            (function(){

                var name = "";

                Person = function(value){                
                    name = value;                
                };

                Person.prototype.getName = function(){
                    return name;
                };

                Person.prototype.setName = function (value){
                    name = value;
                };
            })();

            var person1 = new Person("qinjie");
            alert(person1.getName());   //"qinjie"
            person1.setName("daimeng");
            alert(person1.getName());   //"daimeng"

            var person2 = new Person("gglinux");
            alert(person1.getName());   //"gglinux"
            alert(person2.getName());   //"gglinux"

3:最好的方法,使用“模块模式”。

      function BaseComponent(){
            }

            function OtherComponent(){
            }

            var application = function(){

                //私有的方法和变量
                var components = new Array();

                //初始化
                components.push(new BaseComponent());

                //公共的调用接口
                return {
                    getComponentCount : function(){
                        return components.length;
                    },

                    registerComponent : function(component){
                        if (typeof component == "object"){
                            components.push(component);
                        }
                    }
                };
            }();

            application.registerComponent(new OtherComponent());
            alert(application.getComponentCount());  //2
Arcmap计算土方量教程 1. 创建现状TIN 结果数据: 2. 创建设计TIN 结果数据: 注意:现状TIN和设计TIN构建时候的坐标系不同,设置坐标系见最后的注意事项第1点,就是import(导入)那步骤,现状TIN构建时选择高程点数据或者等高线数据,设计TIN构建时候选择洱海面数据 3. TIN转栅格 改成你要存的数据库,注意中间不要有汉字 结果数据(设计TIN转栅格的同理) 4. 裁剪现状TIN转成的栅格 结果数据: 5. 计算土方量 结果数据: ... 阅读详情

相关推荐

等保三级-MySQL 安全加固实战指南

本文详细介绍了MySQL数据库在等保三级要求下的安全加固实战指南,涵盖身份鉴别、访问控制、安全审计、网络传输安全、入侵防范和数据完整性等关键领域。通过具体配置示例和实战经验,帮助用户有效提升MySQL数据库的安全防护能力,满足等保三级合规要求。

weixin_29197835的博客 183

函数表达式

一、函数表达式定义 函数的方式有两种:一种是函数声明,另一种是函数表达式函数声明语法格式如下: function functionName(arg0,arg1,arg2){ //函数体 } 关于函数声明,有一个重要的特征就是函数声明提升,意思是在执行代码之前会先读取函数声明 函数表达式语法格式如下: var functionName=function(arg0,arg1,arg2){ //函数体 } 二、递归 递归函数是一个函数通过名字调用自身情况构成的经典的递归函数 function factorial(

qq_42770988的博客 5499

【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)

PacketTracer软件内MCU芯片编程入门 零基础

ChloeMax_的博客 9454

函数表达式总结

函数表达式

weixin_43554610的博客 2386

MDPI期刊投稿全流程解析:从注册到提交的实用指南

本文详细解析了向MDPI期刊投稿的全过程,从注册账号、完善个人资料、上传稿件,到填写作者信息、推荐审稿人及提交附信等关键步骤。指南强调了使用机构邮箱、遵循期刊模板、认真准备Cover Letter等实用技巧,旨在帮助作者高效、规范地完成投稿,避免常见错误,提升稿件处理效率。

weixin_29250403的博客 924

智能体在车联网中的应用:一份详尽到每日的100天学习路线图

这100天的旅程,是一次对毅力、学习方法和工程实践能力的综合考验。它不仅关乎掌握一系列技术点,更关乎培养解决复杂系统性问题的思维模式——将宏观的交通需求分解为微观的智能体决策,再通过多智能体协同涌现出宏观的智能行为。当你完成这份大纲时,你将拥有的不仅是一个项目作品集,更是一套应对“智能体+车联网”乃至更广泛AI+垂直领域挑战的方法论。未来已来,期待你成为构建智能交通新生态的关键贡献者。

IT深耕十余载,大道之简 1332

函数的概念和函数表达式的几种形式是什么?

这种类型的函数使用其他函数作为输入或输出,或者二者皆有。例如,函数f(f(x)),它将一个函数作为输入,并返回该函数的输出。在某些编程语言(如Python)中,可以创建高阶函数,即接受其他函数作为参数或返回函数的函数。例如,一个简单的映射函数可能是 f(x) = 2x + 1,它将输入值 x 映射到输出值 2x + 1。:这是在许多编程语言(如Python)中定义的匿名函数形式,即没有明确名称的函数。:这是最常见的函数形式,它通过数学符号和公式来表示函数关系。:这是由多个基本函数组合而成的函数。

z13903931414的博客 1680

ArduPilot代码解析之四 — 姿态和位置控制

ArduPilot采用级联控制架构实现飞行器的姿态和位置管理。该系统通过位置→速度→加速度→姿态→角速率→电机指令的逐级转换,将高级指令转化为底层执行信号。位置控制采用三维独立控制,水平轴与垂直轴分别处理;姿态控制通过角度误差→角速率→电机输出的两层级联实现。系统支持多种输入模式,并内置运动学整形功能确保轨迹平滑。不同飞行器类型(多旋翼、直升机、潜艇等)有专门的调参方案,通过调整PID参数、加速度限制等实现最优控制性能。该架构兼顾控制精度与飞行稳定性,适用于各类自主飞行场景。

rainercool的专栏 825

7.函数表达式1

函数表达式:定义函数的方式有两种:一种是函数声明,另一种就是函数表达式。 function functionName(arg0, arg1, arg2) { //函数体 } //首先是function 关键字,然后是函数的名字,这就是指定函数名的方式。 //Firefox、Safari、Chrome和Opera 都给函数定义了一个非标准的name 属性, 通过这个属性可以访问到给函数指定的名字。这个属性的值永远等于跟在function 关键字后面的标识符。 //只在Firefox、Safari、

official business 648

使用示波器通过串口抓取数据波形

当我们在软件上发送一个数据,需要在示波器上正确的显示发送数据的波形时,这个过程是需要按照软件上串口配置的参数对示波器进行调节的,本次使用的示波器(型号为RIGOL DS1102Z-E)外观如下图所示,本次对采集波形的调节主要用到以下几处按钮。具体是两条导线T+连接R+、T-连接R-,连接完毕后,打开XCOM软件,首先配置好参数后打开串口,如下所示,若在发送窗口发送数据在接收窗口可以实时显示到的话,证明串口的收发功能是正常的。1.CH1、CH2是示波器上的两个采集通道,本次波形采集使用的是CH1通道。

weixin_58061628的博客 1万+

深入Netflix影片分类数据抓取的Python爬虫实战:反反爬机制绕过与Playwright应用全解析

技术工具用途Playwright控制真实浏览器模拟用户行为开发语言asyncio异步调度浏览器任务pandas数据处理和导出sqlite3本地数据库存储支持随机UA模拟,增强反爬能力为什么选择 Playwright?✅ 支持多浏览器(Chromium、Firefox、WebKit)✅ 原生支持 Python 异步编程✅ 提供截图、滚动模拟、验证码处理等高级功能✅ 反爬能力强,模拟真实用户访问。

2201_76125261的博客 1239

JavaScript学习笔记(十)函数表达式

函数表达式 定义函数的方式有两种:一种是 函数声明,另一种就是 函数表达式。 函数声明的语法是这样的。 function functionName(arg0, arg1, arg2) { //函数体 } 首先是 function 关键字,然后是函数的名字,这就是指定函数名的方式。Firefox、Safari、Chrome和 Opera 都给函数定义了一个非标准的 name 属性,通过这个属...

点君的博客 322

GRCNN抓取网络学习3【自制Jacquard数据集模型调优】

请先完成,这样有利于下面操作的理解!然后第二步是,有了自己的数据集输入到GRCNN中是三种文件,那么可以GRCNN抓取网络学习2【自制Jacquard数据集训练】!既然学会训练,那么开展下一步计划模型调优。GRCNN源码:https://github.com/skumra/robotic-grasping。

vor234的博客 2501

JavaScript学习笔记之函数表达式与闭包

JavaScript中函数表达式和闭包的相关知识

Missing27的专栏 668

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SAP B1中文培訓教材_SDK

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

JS学习笔记3_函数表达式

JS学习笔记3_函数表达式 阅读(1,066) 评论(2) JS2015-04-07 1.函数表达式与函数声明的区别 函数声明有“提升”(hoisting)的特性,而函数表达式没有。也就是说,函数声明会在加载代码时被预先加载到context中,而函数表达式只有在执行表达式语句时才会被加载 2.闭包 有权访问另一个函数作用域中的变量的函数。闭包可以访问另一个作用域中的变

puppetgg的博客 258

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

JavaScript--学习笔记22(函数表达式)

五、小结 在 JavaScript 编程中,函数表达式是一种非常有用的技术。使用函数表达式可以无须对函数命名, 从而实现动态编程。匿名函数,也称为拉姆达函数,是一种使用 JavaScript 函数的强大方式。以下总结了函数表达式的特点。 函数表达式不同于函数声明。函数声明要求有名字,但函数表达式不需要。没有名字的函数表 达式也叫做匿名函数。 在无法确定如何引用函数的情况下,递归函数就会变得比较复杂; 递归函数应该始终使用 arguments.callee 来递归地调用自身,不要使...

weixin_57891227的博客 197

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

前端入门学习笔记(二十三)JavaScript入门(六)函数、函数表达式、箭头函数、函数调用(参数相关)、JS函数中的大坑

函数的命名 函数是行为。所以它们的名字通常是动词。它应该简短且尽可能准确地描述函数的作用。这样读代码的人就能得到正确的线索。 一种普遍的做法是用动词前缀来开始一个函数,这个前缀模糊地描述了这个动作。团队内部必须就前缀的含义达成一致。 例如,以 “show” 开头的函数通常会显示某些内容。 “get…” —— 返回值, “calc…” —— 计算 “create…” —— 创建, “check…” ...

TUTsmile的博客 1182

Javascript学习笔记(详)(三)——函数表达式与DOM

函数表达式 函数声明语法 function functionName(arg0, arg1,...){ //content } function functionName(arg1) { alert(arg1); } alert(functionName.name);//functionName 函数声明提升:执行代码之前会先读取函数声明 函数表达式: let functionName = function(arg0, arg1, ...){ //con

Snowzhao的博客 345

JavaScript高程学习笔记之函数表达式(7)

[TOC] 函数表达式的特征 使用函数实现递归 使用闭包定义私有变量 1. 递归 argument.callee:一个指向正在执行函数的指针,严格模式下会出错 命名函数表达式,严格和非严格都不会出错 var factorial = (function f(num){ if (num ...

chongyaofeng4848的博客 134

Javascript高级编程学习笔记(23)—— 函数表达式(1)递归

前面的文章中,我在介绍JS中引用类型的时候提过,JS中函数有两种定义方式 第一种是声明函数,即使用function关键字来声明 第二种就是使用函数表达式,将函数以表达式的形式赋值给一个变量,这个变量就保存了对这个函数的引用 function与表达式的区别前文也已经详细分析过,这里就大概讲解一下 虽然两者在写法上没有什么不同,但是function关键字作为函数声明的时候,与v...

dazhongshuo1167的博客 132

JavaScript学习笔记(十) 函数声明VS函数表达式

我们应该在什么时候使用函数声明或函数表达式呢? 当你在语法上不能使用函数声明的时候,你就可以使用函数表达式; 比如:传递一个函数作为参数或者在对象字面量中定义一个函数: // this is a function expression, // pased as an argument to the function `callMe` callMe(function () { // I a

乱七八糟 1062

JavaScript学习笔记——函数 Part5:函数表达式、匿名函数-让代码更简洁

本章将再进一步,深入函数的核心,从而娴熟地使用函数。 学习了匿名函数,你的JavaScript表达能力将大大提升 还将介绍一些与函数相关的常见编码习惯和约定,为与人协作编写代码或使用开源JavaScript库作好准备 要点 函数表达式的结果是一个函数引用,因此在可以使用函数引用的任何地方,都可使用函数表达式。可将函数表达式传递给函数,还可从函数返回函数表达式。 匿名函数是没有名称的函数表达式。 使用匿名函数可让代码更简洁。 函数声明创建的函数是在执行其他代码前定义的。 函数表达式是在运行阶段与其他代码一.

Insomnia_X的博客 618

JavaScript--学习笔记19(函数表达式)

一、递归 递归函数是在一个函数通过名字调用自身的情况下构成的,如下所示。 function factorial(num){ if (num <= 1){ return 1; } else { return num * factorial(num-1); } } 这是一个经典的递归阶乘函数。虽然这个函数表面看来没什么问题,但下面的代码却可能导致它出错。 var anotherFactorial = factorial; factorial = null; alert

weixin_57891227的博客 131

Javascript学习笔记3 函数表达式 闭包

函数声明提升:执行代码之前会先读取函数声明(但是使用函数表达式命名定义函数时,使用前必须赋值) sayhi(); //错误,函数还未赋值 var sayhi = function(){ alert("hi"); }; 闭包 是指有权访问另一个函数作用域中的变量的函数 当创建函数时,会创建一个预先包含全局变量对象的作用域链。作用域链本质上是一个指向变量对象的指针列表,...

zjw_python的博客 412
上一篇: js学习笔记-面向对象程序设计
下一篇: html5 总结-新增重要标签及属性
gglinux
博客等级 码龄14年 68粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值