JavaScript基础(十四)

news2024/9/21 22:54:56

函数

很多人一看到这两个字就头大,可能由于多年被数学摧残有不小阴影,放心,我们这里的函数不是那些东西,在编程中我们的函数指的是:

程序的基本单元,是完成特定任务的代码语句块。

我们在写程序时,可能会用到很多重复的代码,函数可以把我们重复性的东西装起来,用的时候直接调用,相当于模板。

函数可以分为两类:

系统函数自定义函数。

函数有以下几个特征:

1.可有返回值,

2.可以传递参数,

3.实现一个功能。

自定义函数(无参)

创建方法:

1.函数定义

function  函数名( ){

         js语句

        }

2.调用

函数声明后调用才能使用,一般直接函数名()就可以调用,大部分时候是我们上篇所说的通过绑定调用。

带参函数

函数名后面那个括号到底是干什么用的,人家肯定不是为了好看才加上去的,这是要介绍到我们参数

参数:   形参(制定规则)

           实参(实际的传值)

语法:

function 函数名(参数1,参数2){

           js语句;

}

调用:

事件名="函数名(参数1,参数2)"

很多同学看到这一脸懵,也不知道什么跟什么,正常,这里我们就可以用带参的方法,做一个有参函数的加法:

function add(a,b){

      console.log('a:'+a);

      console.log('b:'+b);

      console.log(a+b);

   }

   add(2,3);

//上面我们传入参数ab,这里调用的时候把ab对应的值直接传进去,打印出我们要的a的值,b的值,a+b的值。

7e6b85d857fd42d4829c463b482ba2d6.png

有的同学看到这:唉!我有一计,我只传个2行不行,不行是个什么结果:

add(2);

8980b22a777d42e2aca83e44fb0a3ac5.png

b是undefined直接找不到的,NaN还记得吗?是不是就是一个不是数字的值,运算不能执行导致,这是不是说明,我们只传入一个值,它就对应我们传进去的第一个参数的值。

那我手抖多传了一个是什么结果呢?

  add(4,3,2);

522a01f2a1ef47a2af5a3ffbda161ad5.png

结果我们可以得出,无论我们传入多少,它他与我们的参数关系式一一对应的。

想到一个好玩的,我们可以用之前学的随机数,写一个用传参写一个小游戏,要求写一个名字,随机生成这个人会成为什么样的人:

<body>

   <button οnclick="fn(prompt('请输入您的名字'))">开始测试!</button> 

</body>

<script>

   function fn(name){

//parseInt取整还记得吧

     var num=parseInt(Math.random()*10);

     document.write(num+'<br>');

//这里把数字打印出来,方便看结果对不对

     if(num<3){

      document.write(name+'会成为一个聪明的人');

     }else if(num<6){

      document.write(name+'会成为一个幽默的人');

     }else if(num<9){

      document.write(name+'会成为一个好人');

     }else{

      document.write(name+'无敌了');

     }

   }

</script> 

bedf9e67969a449db165ddf45edd8f0b.png

c0766ae0a9d64230928f1459f156a1de.png

匿名函数

这次不废话了,匿名函数就是没有名称的函数,通过变量来接收函数,再通过调用变量名来达到调用函数的目的。

定义:

var 变量名=function (参数1,参数2){

        js语句;

    }

调用:

事件名="变量名(参数1,参数2)";

例:

var num=function(a,b){
   console.log(a+b);
  }
  num(11,22);

da28e46503154c58b7c060b34824ca96.png

没有太多区别,就相当于把函数赋值给了一个变量。

自执行函数

函数声明完以后,需要调用才能够使用,一些情况下,我们需要函数声明后,无需调用就可以自己来执行,此时就需要自执行函数——无需调用自己执行。

定义:

 (function(){

   JS语句

  }(  ))

那刚学的匿名函数和它比就知道了:

var fn=function(){

   console.log('匿名函数');

  }

  fn();

  //写法一   (函数(参数))

  (function(){

   console.log('写法1');

  }());

  //写法二   (函数)(参数)

  (function(){

   console.log('写法2');

  })()

c4a7cd173429408f81cb9f71ab65ae4d.png

可以看到,后面两个函数我并没有调用,但是他们却自己在后面打印出来的,这就是自执行函数。

同时我们发现这两种写法,值得一提的是中间那个分号不要忘记(已经用黑色加重出来了),因为它外面是个括号,分号才能代表这个函数执行完毕,如果不加就会出现下面这种报错:

239820b3df3e4b11a3365a02879b91b9.png

他跟你说从哪到哪这个东西不是一个函数,

这不只是适用于这里,如果出现报错也很有可能是你某个地方分号没有加上!

最后的话,我们就可以在后面那个括号里传入参数,例:

 (function(name){

   console.log(name+'帅呆了');

  })('李二狗')

011110374d274952aefe962be56c4850.png

  (function(a,b){

   console.log(a+b);

  }(22,33))

5a1262453df24258bc253df4684477ee.png

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1930502.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【RAG探索第4讲】KG+RAG丨基于知识图谱优化大型语言模型方法

原文链接&#xff1a;【RAG探索第4讲】KGRAG丨基于生物医学知识图谱优化的大型语言模型提示生成方法 一、现有问题&#xff1a; LLMs在处理特定领域或高度专业化查询时缺乏专业知识&#xff0c;导致回答不够准确和可靠。 LLMs可能会产生事实错误&#xff08;即幻觉&#xff0…

【整洁单元测试】测试气味Test Smells

背景 "Code smell" 是软件开发中的一个术语&#xff0c;指的是代码中可能表明存在问题的某些迹象或模式。这些迹象本身并不表示代码一定有错误&#xff0c;但它们通常表明代码可能难以理解、维护或扩展。Code smells 可以视为一种警告&#xff0c;提示开发者需要进一…

0基础学python-14:python进阶之面向对象

前言 Python是一门解释型、面向对象以及动态数据类型的高级程序设计语言&#xff0c;今天所要说的就是极为重要的概念&#xff0c;面向对象。 一、面向对象的核心概念&#xff1a; 1.类&#xff08;Class&#xff09;&#xff1a; 类是对象的抽象描述&#xff0c;是面向对象编…

HarmonyOS开发中几个常见问题

前言 最近开始HarmonyOS应用开发&#xff0c;遇到一些小问题&#xff0c;也算是自己看官网文档没记住的东西&#xff0c;过程中再记录一下。 一、更改应用的名字和图标 对比看下Android工程中是如何更改的&#xff0c;只需要在清单文件AndroidManifest.xml中&#xff0c;更改…

机器学习 | 深入理解激活函数

什么是激活函数&#xff1f; 在人工神经网络中&#xff0c;节点的激活函数定义了该节点或神经元对于给定输入或一组输入的输出。然后&#xff0c;将此输出用作下一个节点的输入&#xff0c;依此类推&#xff0c;直到找到原始问题的所需解决方案。 它将结果值映射到所需的范围…

CSS综合案例(快报模块头部制作)

&#xff08;大家好&#xff0c;今天我们将继续来学习CSS的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 一、前述 二、案例分析 1.样例参看 2.拆分分析 三、案例实施 一、前述 案例&#xff1a;快报模块头部制…

微信小程序基本语法

官网 https://developers.weixin.qq.com/miniprogram/dev/framework/ 视频教程&#xff1a;尚硅谷微信小程序开发教程&#xff0c;2024最新微信小程序项目实战&#xff01; 仿慕尚花坊项目源码&#xff1a;https://gitee.com/abcdfdewrw/flower-workshop 目录 一&#xff0c;初…

热门软件缺陷管理工具2024:专业评测与建议

国内外主流的10款软件缺陷管理工具软件对比&#xff1a;PingCode、Worktile、禅道、Tapd、Teambition、Tower、JIRA、Bugzilla、MantisBT、Trac。 在软件开发过程中&#xff0c;管理缺陷和漏洞常常成为一项挑战&#xff0c;尤其是在项目规模庞大时。选择一个高效的软件缺陷管理…

C#实现自定义标签的设计和打印

背景:最近在进行资产盘点的时候,需要对固定资产设计标签并进行打印。 设计标签:选用的是Fastreport自带的,可拆包忌用的标签设计器;进行标签的模型设计。 软件解压后可直接进行使用。模板的设计基本都是无脑操作,拖拽控件按,放置到固定未知即可;我设计的模板如下: 说…

Vision Pro的增强视觉:企业级Unity插件包实现主摄像头访问

在AR和VR技术的快速发展中,Unity作为跨平台游戏和应用开发的首选引擎,其插件生态的丰富性一直是开发者们关注的焦点。最近,一个专为Vision Pro设计的Unity插件包——EnterpriseCameraAccessPlugin,因其能够通过企业API访问主摄像头的功能,引起了广泛关注。 一、插件背景与…

springboot+vue+mybatis鲜花管理系统+PPT+论文+讲解+售后

随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;鲜花管理系统当然也不能排除在外。鲜花管理系统是以实际运用为开发背景&#xff0c;运用软件工程开发方法&#xff0c;采用SSM技…

小阿轩yx-zookeeper+kafka群集

小阿轩yx-zookeeperkafka群集 消息队列(Message Queue) 是分布式系统中重要的组件 通用的使用场景可以简单地描述为 当不需要立即获得结果&#xff0c;但是并发量又需要进行控制的时候&#xff0c;差不多就是需要使用消息队列的时候。 消息队列 什么是消息队列 消息(Mes…

前端框架入门之Vue _el和data的两种写法 分析MVVM模型

目录 _el与data的两种写法 MVVM模型 _el与data的两种写法 查看vue的实例对象 我们在这边注释掉了el属性 这样的话div容器就绑定不了vue实例 当我们可以在这里写一个定时任务 然后再回头指定 这个mount有挂载的意思 就是把容器对象交给vue实例后 去给他挂载指定的对象 &…

MySQL 进阶(四)【锁】

1、锁 1.1、锁的概述 锁就不需要多介绍了&#xff0c;多个用户访问共享数据资源&#xff0c;如何保证数据并发访问的一致性、有效性是数据库最重要的问题。同时&#xff0c;锁冲突也是影响一个数据库并发性能最重要的因素。 MySQL 中锁的划分有三类&#xff1a; 全局锁&…

敏捷营销在AI智能名片微信小程序中的应用探索

摘要&#xff1a;在数字化转型的浪潮中&#xff0c;企业面临着前所未有的挑战与机遇。AI智能名片微信小程序作为一种创新的营销工具&#xff0c;以其便捷性、智能化和高效性&#xff0c;正逐步成为企业连接客户、推广品牌的新宠。然而&#xff0c;如何在快速变化的市场环境中&a…

Automation Anywhere推出新一代AI+自动化企业系统,助力企业实现10倍商业增长

RPA厂商纷纷进军AI Agent ( AI 代理)领域&#xff0c;陆续推出创新产品。最近&#xff0c;Automation Anywhere宣布推出其新的AI 自动化企业系统&#xff0c;该系统结合AI和自动化技术&#xff0c;以实现指数级的业务成果。 在Imagine 2024大会上首次亮相的这款新产品&#xf…

机器学习中的梯度下降

本文只是简单解释一下梯度下降&#xff0c;其中涉及到的公式并没有展示说明。 1.什么是梯度&#xff1f; 梯度也可以理解为导数。 在一维空间中&#xff1a;梯度就是导数&#xff0c;或者说对于一个线性函数&#xff0c;也就是线的斜率。 2.什么是梯度下降&#xff1f; 梯度是…

字典树实现

一、字典树 字典树&#xff08;Trie树&#xff09;是一种多叉树结构&#xff0c;每条边代表一个字符&#xff0c;从根节点到其它节点的路径构成一个单词。其具有较好的查询性能&#xff0c;可以用于有效地存储大量字符串&#xff0c;并支持高效的查找、插入和删除操作。 二、…

浏览器缓存:强缓存与协商缓存实现原理有哪些?

1、强缓存&#xff1a;设置缓存时间的&#xff0c;那么在这个时间内浏览器向服务器发送请求更新数据&#xff0c;但是服务器会让其从缓存中获取数据。 可参考&#xff1a;彻底弄懂强缓存与协商缓存 - 简书 2、协商缓存每次都会向浏览器询问&#xff0c;那么是怎么询问的呢&…

java 项目使用 acitiviti 流程引擎中的人员设置

学习目标&#xff1a; 目标 [ ]了解 java 项目使用 acitiviti 流程引擎中的人员设置 知识小记&#xff1a; - [x] 1、人员选择说明 - [x] 2、分配任务候选人 任务的候选人是指有权限对该任务进行操作的潜在用户群体&#xff0c;这个用户群体有权限处理(处理、完成)该任务…