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


相关推荐: 在线制作视频的网站有哪些,电脑如何制作视频短片?  iOS验证手机号的正则表达式  免费视频制作网站,更新又快又好的免费电影网站?  如何快速搭建虚拟主机网站?新手必看指南  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  MySQL查询结果复制到新表的方法(更新、插入)  linux top下的 minerd 木马清除方法  重庆市网站制作公司,重庆招聘网站哪个好?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  如何在香港免费服务器上快速搭建网站?  Laravel如何使用Telescope进行调试?(安装和使用教程)  怎样使用JSON进行数据交换_它有什么限制  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  高端建站如何打造兼具美学与转化的品牌官网?  香港服务器选型指南:免备案配置与高效建站方案解析  装修招标网站设计制作流程,装修招标流程?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  JS实现鼠标移上去显示图片或微信二维码  详解阿里云nginx服务器多站点的配置  JavaScript如何操作视频_媒体API怎么控制播放  php打包exe后无法访问网络共享_共享权限设置方法【教程】  如何快速打造个性化非模板自助建站?  Laravel如何使用Gate和Policy进行授权?(权限控制)  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  Linux系统命令中screen命令详解  音乐网站服务器如何优化API响应速度?  如何在建站宝盒中设置产品搜索功能?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  Android 常见的图片加载框架详细介绍  JS弹性运动实现方法分析  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  Swift中switch语句区间和元组模式匹配  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  Laravel如何为API编写文档_Laravel API文档生成与维护方法  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  Laravel如何生成API文档?(Swagger/OpenAPI教程)  高端智能建站公司优选:品牌定制与SEO优化一站式服务  如何获取免费开源的自助建站系统源码?  如何快速搭建高效WAP手机网站?