JavaScript 函数的定义-调用、注意事项

发布时间 - 2026-01-11 00:40:29    点击率:

函数定义

函数语句定义

function(a,b){
 return a+b; 
}

表达式定义

var add = function(a,b){return a+b};

//函数表达式可以包含名称,这在递归时很有用 var f = function fact(x){ if(x<=1) {return 1; }else { return x*faxt(x-1); } }

以表达式方式定义的函数,函数的名称是可选的。如果函数定义表达式包含名称,函数的局部作用域将会包含一个绑定到函数对象的名称,实际上,函数的名称将成为函数内部的一个局部变量

函数命名规范

1.like_this()第一个字符为小写,当包含多个单词时候,单词以下划线分割

2.likeThis()第一个字符为小写,当包含多个单词时候,除第一个单词以外的单词首字母使用大学字母

3.内部函数或私有函数,通常以一条下划线为前缀

注:函数声明语句‘被提前到外部脚本或外部函数作用于顶部,所以可以被在它定义之前出现的代码所调用

以表达式方式定义函数前必须把它赋值给一个变量。所以表达式方式定义的函数在定义之前是无法调用的

函数返回值

  • return语句返回函数的值给调用者。
  • return语句没有,则它返回undefined

 嵌套函数

  • 嵌套函数可以访问他们的函数的参数和变量
  • 但是嵌套函数不能出现在循环、条件判断,或者try/cache/finally/with语句中

函数调用

  • 作为函数
  • 作为方法
  • 作为构造函数
  • 通过他们的call()和apply()方法间接调用

作为函数调用

add(1,2)

 根据ECMAScript3和非严格的ECMAScript5对函数调用的规定,调用上下文(this的值)是全局对象。然而在严格模式下,调用上下文则是undefined。

//定义一个函数且调用一个函数来确定当前脚本运行是否为严格模式
 var strict = (function(){return this;}());

作为方法调用

var o = {
 m:1,
 n:2,
 add:function(){
  this.result = this.m+this.n;
  }
}

方法调用和函数调用的一个重大区别。----调用上下文

o.add() add的调用上下文为o,即:this
o.add() 等同于o['add']()
方法链:当方法并不需要返回值时候,最好直接返回this
this为一个关键字,不是变量,也不是属性名。JavaScript语法不允许给this赋值
和变量不同,关键字this没有作用于的限制,嵌套的函数不会从调用它的函数中继承this,如果想访问外部函数的this,var self= this;保存在变量中
如果嵌套函数作为函数调用,其this的值指向调用它的对象。如果作为函数调用,this不是全局对象(非严格模式),就是undefined(严格模式)

构造函数调用

var o = new Object();

构造函数调用和普通函数调用以及方法调用在实参处理。调用上下文和返回值等方面都有不同。

凡是没有形参的构造函数调用都可以省略圆括号。

var o = new Object();
var o = new Object;
//等价

构造函数调用创建一个新的空对象,这个对象继承自构造函数的prototype属性,这个函数试图初始化这个新创建的对象,病将这个对象做为上下文,因此构造函数可以使用this关键字来引用这个新创建的对象。

new o.m() 调用的上下文并不是o.
构造函数并不使用return。如果构造函数显示的使用return语句返回一个对象,那么调用表达式的值就是这个对象。如果构造函数但并没有返回值,或者返回一个原始值,那么就会忽略返回值,同时使用新对象作为返回结果。

间接调用

call()
appy()


# js  # 函数的定义  # JavaScript:new 一个函数和直接调用函数的区别分析  # JavaScript函数的4种调用方法实例分析  # 深入学习 JavaScript中的函数调用  # 浅谈js函数三种定义方式 & 四种调用方式 & 调用顺序  # javascript函数的四种调用模式  # Javascript 函数的四种调用模式  # 深入理解JavaScript中的尾调用(Tail Call)  # javascript使用call调用微信API  # 基于JavaScript实现继承机制之调用call()与apply()的方法详解  # javaScript call 函数的用法说明  # JavaScript中的apply和call函数详解  # JavaScript直接调用函数与call调用的区别实例分析  # 返回值  # 第一个  # 他们的  # 多个  # 递归  # 作用于  # 一个函数  # 就会  # 都有  # 将会  # 则是  # 出现在  # 下划线  # 等方面  # 把它  # 可以使用  # 可选  # 这在  # 绑定  # 创建一个 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  制作企业网站建设方案,怎样建设一个公司网站?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  如何在阿里云完成域名注册与建站?  如何实现建站之星域名转发设置?  在Oracle关闭情况下如何修改spfile的参数  Swift中swift中的switch 语句  香港服务器如何优化才能显著提升网站加载速度?  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  如何在VPS电脑上快速搭建网站?  制作公司内部网站有哪些,内网如何建网站?  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  大连 网站制作,大连天途有线官网?  Bootstrap整体框架之CSS12栅格系统  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  海南网站制作公司有哪些,海口网是哪家的?  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  Laravel怎么为数据库表字段添加索引以优化查询  如何快速选择适合个人网站的云服务器配置?  简单实现Android验证码  如何在阿里云购买域名并搭建网站?  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  jquery插件bootstrapValidator表单验证详解  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  Python正则表达式进阶教程_复杂匹配与分组替换解析  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  如何获取免费开源的自助建站系统源码?  原生JS实现图片轮播切换效果  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  如何快速查询网址的建站时间与历史轨迹?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  Laravel如何实现事件和监听器?(Event & Listener实战)  如何在橙子建站中快速调整背景颜色?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  WEB开发之注册页面验证码倒计时代码的实现  如何快速搭建自助建站会员专属系统?  音乐网站服务器如何优化API响应速度?  使用豆包 AI 辅助进行简单网页 HTML 结构设计