全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

浅谈JavaScript的函数及作用域

函数和作用域是JavaScript的重要组成部分,我们在使用JavaScript编写程序的过程中经常要用到这两部分内容,作为初学者,我经常有困惑,借助写此博文来巩固下之前学习的内容。

(一)JavaScript函数

JavaScript函数是指一个特定代码块,可能包含多条语句,可以通过名字来供其他语句调用以执行函数包含的代码语句。

1.JavaScript创建函数的方法有两种:

函数声明:

function funcDeclaration(){ return 'A is a function'; }

函数表达式:

var funExpression=function(){ return 'A is a function '; }

上述函数声明和函数表达式的区别(注明:翻译自:不同的方式来写一个函数)在:

JavaScript解析器中存在一种变量声明被提升(hosting)的机制,也就是说变量(函数)的声明会被提升到作用域的最前面,即使写代码的时候是写在最后面,也还是会被提升至最前面。

例如以下代码段:

alert(foo); // function foo() {}
alert(bar); // undefined
function foo() {}
var bar = function bar_fn() {};
alert(foo); // function foo() {}
alert(bar); // function bar_fn() {}

输出结果分别是function foo() {} 、undefined 、function foo() {} 和function bar_fn() {} 。

可以看到foo 的声明写在alert之后,仍然可以被正确调用,因为JavaScript解释器会将其提升到alert前面,而以函数表达式创建的函数bar则不享受此待遇。

所以,JavaScript 引擎执行以上代码的顺序可能是这样的:

  • 创建变量foo和 bar,并将它们都赋值为undefined。
  • 创建函数 foo 的函数体,并将其赋值给变量foo。
  • 执行前面的两个 alert。
  • 创建函数 bar_fn ,并将其赋值给 bar。
  • 执行后面的两个 alert。

2.函数的参数

在调用函数时,你可以向其传递值,这些值被称为参数。

function printName(name){
  console.log(name);
}
printName('Byron');
printName('Casper);

其中name是形参,'Byron'和'Casper'是实参。

说到函数的参数,我们不得不提到arguments。此处涉及的内容有点多,请看客们参考楼主之前转载的javascript arguments。

3.函数重载

重载是很多面向对象语言实现多态性的手段之一,在静态语言中确定一个函数的手段是靠方法签名--函数名+参数列表,也就是说相同名字的函数参数个数不同或者顺序不同都被认为是不同的函数,成为函数重载。

在JavaScript中没有函数重载的概念,函数通过名字确定唯一性,参数不同也被认为是相同的函数,后面的覆盖前面的。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# js  # 函数  # 作用域  # 深入理解js函数的作用域与this指向  # JavaScript 基础函数_深入剖析变量和作用域  # JavaScript匿名函数之模仿块级作用域  # JavaScript函数作用域链分析  # js函数内变量的作用域分析  # 一篇文章告诉你JavaScript的作用域和函数该这样理解  # 写在  # 最前面  # 也就是说  # 一个函数  # 你可以  # 是这样  # 是指  # 说到  # 将其  # 并将其  # 可以通过  # 要用  # 并将  # 可以看到  # 提升到  # 被称为  # 有两种  # 两部分  # 而以  # 多条 


相关文章: 香港服务器租用费用高吗?如何避免常见误区?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  如何通过WDCP绑定主域名及创建子域名站点?  专业网站建设制作报价,网页设计制作要考什么证?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  大连网站制作公司哪家好一点,大连买房网站哪个好?  如何在七牛云存储上搭建网站并设置自定义域名?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  视频网站app制作软件,有什么好的视频聊天网站或者软件?  5种Android数据存储方式汇总  建站168自助建站系统:快速模板定制与SEO优化指南  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  零服务器AI建站解决方案:快速部署与云端平台低成本实践  定制建站模板如何实现SEO优化与智能系统配置?18字教程  官网网站制作腾讯审核要多久,联想路由器newifi官网  如何制作网站标识牌,动态网站如何制作(教程)?  如何快速上传自定义模板至建站之星?  如何用已有域名快速搭建网站?  如何在IIS7上新建站点并设置安全权限?  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  如何通过NAT技术实现内网高效建站?  如何快速搭建高效WAP手机网站吸引移动用户?  如何通过FTP服务器快速搭建网站?  如何通过可视化优化提升建站效果?  如何快速配置高效服务器建站软件?  高端云建站费用究竟需要多少预算?  制作网站公司那家好,网络公司是做什么的?  太原网站制作公司有哪些,网约车营运证查询官网?  如何配置WinSCP新建站点的密钥验证步骤?  网站制作新手教程,新手建设一个网站需要注意些什么?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  如何实现建站之星域名转发设置?  学校为何禁止电信移动建设网站?  南宁网站建设制作定制,南宁网站建设可以定制吗?  济南专业网站制作公司,济南信息工程学校怎么样?  宝塔面板如何快速创建新站点?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  建站主机SSH密钥生成步骤及常见问题解答?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  南平网站制作公司,2025年南平市事业单位报名时间?  如何通过wdcp面板快速创建网站?  如何在阿里云域名上完成建站全流程?  c++ stringstream用法详解_c++字符串与数字转换利器  建站之星logo尺寸如何设置最合适?  TestNG的testng.xml配置文件怎么写  宝塔建站无法访问?如何排查配置与端口问题?  定制建站哪家更专业可靠?推荐榜单揭晓  再谈Python中的字符串与字符编码(推荐)  网站制作的方法有哪些,如何将自己制作的网站发布到网上? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。