位置: 编程技术 - 正文

详解JavaScript函数(javascript函数)

编辑:rootadmin

推荐整理分享详解JavaScript函数(javascript函数),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript函数的定义,javascript中的函数该如何理解,js函数详解,javascript函数,javascript function(),javascript函数用法,javascript中的函数该如何理解,javascript函数用法,内容如对您有帮助,希望把文章链接给更多的朋友!

函数是一组可以随时随地运行的语句,函数作为ECMAScript的核心是很重要的。函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。也就是函数是定义一次但却可以调用或执行任意多次的一段JavaScript代码。函数有时会有参数,即函数被调用时指定了值的局部变量。函数常常使用这些参数来计算一个返回值,这个值也成为函数调用表达式的值。一、函数声明 函数对于任何语言来说都是一个核心的概念。通过函数可以封装任意多条语句,而且可以在任何地方,任何时候调用执行。JS中的函数使用function关键字来声明,后跟一组参数以及函数体。 函数的基本语法是这样的:

ECMAScript规定的函数声明方式有三种:(1)普通函数声明

(2)使用变量初始化什声明函数

(3)使用Function构造函数声明 二、函数的类型及函数的调用 ECMAScript语法规定了 (1)无参数的函数:函数的声明的时候没有参数,调用函数的时候直接使用即可。

运行的结果为:我是中国人!(2)带参数的函数:函数的声明的时候同时定义了参数变量,参数可以是多个。

运行的结果为:你的姓名是:张三 你的年龄是:(3)带有返回值的函数 带参数和无参数的函数,都没有定义返回值,而是调用后直接执行的,实际上,任何函数都可以通过return语句跟后面的要返回的值来实现返回值1)、无参数的函数

同上面的输出结果:我是中国人!2)、带参数的函数

运行的结果为:

(4)作为值的函数(比较特殊)首先我们来看一个函数作为常规的变量的例子:

页面的输出结果为:result=下面则传递的是函数,仔细和上面的区分:

页面的输出结果为:result=三、函数的内部属性 在函数内部,有两个特殊的对象:arguments对象和this对象。arguments对象是类数组对象,包含着传入函数中的所有参数,主要用途是保存函数参数,主要的属性有length,这个属性是动态的判断函数有多少个参数。但这个对象还有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数。 (1)arguments对象的length属性 JS函数不介意传递进来多少参数,也不会因为参数不统一而错误。实际上,函数体内可以通过arguments对象来接收传递进来的参数。 我们先来看一个我们在函数传递参数遇到的问题:函数声明时并不知道要定义多少个参数,在调用函数却出现多出的或不足的问题。

输出的结果为:1|2。因此输出的显然与我们想要做的不符,那么怎么解决呢?有了arguments对象的length属性我们就能可以得到参数的数量,避免上面的错误出现。

详解JavaScript函数(javascript函数)

输出:6 我们还可以利用length属性来智能的判断有多少参数,然后把参数进行合理的应用,比如,实现一个加法运算,将所有传进来的数字累加,而数字的个数又不确定。

输出:(2)arguments对象的callee属性 还是来说问题:对于递归的问题我们很熟悉了,JS中也不例外

输出: 对于阶乘函数一般要用到递归算法,所以函数内部一定对调用自身,如果函数名不改变是没有问题的,但一旦改变函数名,内部的自身调用需要逐一修改。为了解决这个问题,可以使用arguments.callee来代替。

输出:(3)this对象 函数内部另一个特殊的对象时this,其行为与Java和C#中的this大致相似,换句话说,this引用的是函数据以行操作的对象,或者说函数调用语句所处的那个作用域。当在全局作用域中调用函数时,this对象引用的就是window(window是一个对象,是JavaScript中最大的对象,是最外围的对象)。

运行的结果为:

四、函数属性和方法(1)JavaScript中的函数是对象,因此函数也有属性和方法。每个函数都包含两个属性:length和prototype。其中,length属性表示函数希望接受的命名参数的个数。

输出的结果;2 对于prototype属性,它是保存所有实例方法的真正所在,也就是原型。这个属性我们先不做过多的介绍。prototype属性下有两个方法:apply()和call(),每个函数都包含这两个非继承而来的方法。这两个方法的用途都在特定的作用域中调用函数,实际上等于设置函数体内this对象的值。

输出的结果为: (2)call()方法和apply()方法延伸 call()方法和apply()方法相同,它们的区别仅仅在于接收参数的方式不同。对于call()方法而言,第一个参数作用域,没有变化,变化的只是其余参数都是直接传递给函数的。

输出的结果为: call()方法和apply()方法真正的作用是扩展函数赖以运行的作用域

输出的结果为:

使用call()方法或者apply()方法来扩充作用域的最大好处就是对象不需要与方法发生任何耦合关系。也就是说,box对象和sayColor()方法之间不会有多余的关联操作,比如;box.sayColor=sayColor;五、ECMAScript闭包 ECMAScrip最易让人误解的一点是,它支持闭包。闭包,指的是词法表示包括不被计算的变量的函数,就是说,函数可以使用函数之外定义的变量。 其实我在前面的博文已经使用到了闭包,比如在轻松学习JavaScript七:JavaScript的流程控制语句中使用的变量time就是全局变量,函数myFunction()使用这个全局变量,并不是函数本身定义的。还是看一下那个实例吧:

(1)简单的闭包实例 在ECMAScript中使用全局变量是一个简单的闭包实例。请思考下面这段代码输出的结果是什么:

在上面这段代码中,脚本被载入内存后,并没有为函数sayHelloWorld()计算变量sMessage的值。该数捕 sMessage的值只是为了以后的使用,也就是说,解释程序知道在调用该函数时要检查sMessage的值。sMessage将在函数调用sayHelloWorld()是在(最后一行)被赋值,显示消息"hello world"。(2)复杂的闭包实例 在一个函数中定义另一个会使闭包变得更加复杂。例如:

这里,函数addNum()包括函数doAdd()(闭包)。内部函数是一个闭包,因为它将获取外部函数的参iNum1和iNum2以及全局变量iBaseNum的值。 addNum()的最后一步调用了doAdd(),把两个参数和全局变量相加,并返回它们的和。这里要掌握的重要概念是,doAdd()函数根本不接受参数,它使用的值是从执行环境中获取的,因此输出的结果为:。 可以看到,闭包是 ECMAScript 中非常强大多用的一部分,可用于执行复杂的计算。就像使用任何高级函数一样,使用闭包要小心,因为它们可能会变得非常复杂。

标签: javascript函数

本文链接地址:https://www.jiuchutong.com/biancheng/387057.html 转载请保留说明!

上一篇:javascript定义类和类的实现实例详解(javascript 自定义类)

下一篇:常见JS验证脚本汇总(js验证码代码怎么写)

  • 预期信用损失率计算公式
  • 公立医院事业单位录用是编制吗
  • 预算会计退回预付差旅费如何记账?
  • 结转本月销售材料实际成本分录
  • 银行存款对银行的作用
  • 营业执照类型有限责任公司
  • 累计纳税工资是什么意思
  • 固定资产加速折旧税收优惠政策
  • 什么产品可视同自产产品享受退税优惠
  • 制造费用明细账实例图
  • 增值税普通发票查询真伪
  • 工会经费和职工教育经费比例
  • 预付款如何扣除
  • 服务费公司的账务处理
  • 旅行社差额纳税开专票吗 会议会展
  • 国地税联合财务报表小规模企业需要报送的吗?
  • 税务会计核算范围
  • 注册资本使用后账务如何处理
  • 为什么电脑上找不到蓝牙耳机
  • 销售收入里面包括免税收入呢
  • 其他应付款的会计英文
  • 公司购买投影仪的必要性?
  • 以前年度损益调整结转到本年利润吗
  • uefiu盘安装系统步骤win10
  • 电脑dwm.exe是什么
  • 其他应付款与应付款的区别
  • 客户申请退款商家拒绝退货退款会有什么效果
  • 房产增值税计算公式2022最新
  • exescope是什么软件
  • synaudsrv.exe是什么
  • php常用的魔术方法有哪些
  • 应收账款保理的主要意图在于
  • 挪威罗弗敦岛
  • 小企业会计准则2023电子版
  • php绘制图片
  • 特定业务计算的应纳税所得额是指
  • php判断查询结果是否存在
  • php自动生成文章
  • php解析xml文件
  • php中表单的使用
  • 哈希表散列函数
  • api接口安全措施
  • 资产负债表怎么看盈利或亏损
  • 营业执照变更需要本人到场吗
  • 公司土地使用权可以自主转让吗
  • sqlserver游标实例
  • 武汉营业执照注销流程
  • 股东分红要不要纳税?
  • 盈利性幼儿园怎么办理
  • 对外公司
  • 现金形式福利费个税软件怎么申报个税
  • 进项税额转出如何计算增值税
  • 未分配利润科目余额在借方还是贷方
  • 委托加工应税消费品纳税义务发生时间
  • 企业大股东减持股权
  • 招待费用的进项发票可以抵扣吗
  • 银行存款负数如何计算
  • 残保金工资总额是按计提还是发放
  • 未使用的固定资产计提折旧应当计入
  • 补计提上一年度工资
  • 购入汽车属于什么会计科目
  • 坏账准备纳税调增吗
  • 分公司从业人数填越少越好吗
  • os x10.11el capitan公测版beta5更新了什么?os x10.11el capitan公测版beta5发布下载
  • windowsxp怎么隐藏桌面图标
  • linux lv扩容
  • window10窗口操作
  • win7如何开启蓝牙功能
  • linux哪些方法可以查看命令的详细信息
  • windows7出现错误恢复怎么办
  • lru缓存机制是什么
  • javascript有哪些
  • node.js网站
  • 云南省税务申报流程
  • 药店迁址流程2019
  • 增值税发票选择确认平台查询不到以开出的进项发票?
  • 北京国税app
  • 印花税由哪方缴纳
  • 1950土地改革后土地所有权
  • 认缴制什么时候开始的?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设