位置: 编程技术 - 正文

深入浅析javascript立即执行函数(java scripts)

编辑:rootadmin

推荐整理分享深入浅析javascript立即执行函数(java scripts),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascripvoid,深入浅析是什么意思,javasripe,java script,javascripvoid,javascripvoid,java script,java script,内容如对您有帮助,希望把文章链接给更多的朋友!

javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花;当然,能理解各型各色的写法也是对javascript语言特性更进一步的深入理解。

JavaScript 函数语法

函数就是包裹在花括号中的代码块,前面使用了关键词 function:

function functionname(){这里是要执行的代码}

当调用该函数时,会执行函数内的代码。

可以在某事件发生时直接调用函数(比如当用户点击按钮时),并且可由 JavaScript 在任何位置进行调用。

提示:JavaScript 对大小写敏感。关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数。

( function(){…} )() 和 ( function (){…} () ) 是两种javascript立即执行函数的常见写法;

最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目的;后来发现加括号的原因并非如此。要理解立即执行函数,需要先理解一些函数的基本概念。

函数声明、函数表达式、匿名函数

函数声明: function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明。

函数表达式: var fnName = function () {…};使用function关键字声明一个函数,但未给函数命名,最后将匿名函数赋予一个变量,叫函数表达式,这是最常见的函数表达式语法形式。

匿名函数: function () {}; 使用function关键字声明一个函数,但未给函数命名,所以叫匿名函数,匿名函数属于函数表达式,匿名函数有很多作用,赋予一个变量则创建函数,赋予一个事件则成为事件处理程序或创建闭包等等。

深入浅析javascript立即执行函数(java scripts)

函数声明和函数表达式不同之处:

一、Javascript引擎在解析javascript代码时会 "函数声明提升" (Function declaration Hoisting)当前执行环境(作用域)上的函数声明,而函数表达式必须等到Javascirtp引擎执行到它所在行时,才会从上而下一行一行地解析函数表达式;

二、函数表达式后面可以加括号立即调用该函数,函数声明不可以,只能以fnName()形式调用 。

例子:

报错:要求需要一个函数名

在理解了一些函数基本概念后,回头看看 ( function(){…} )() 和 ( function (){…} () ) 这两种立即执行函数的写法,

最初我以为是一个括号包裹匿名函数,并后面加个括号立即调用函数,当时不知道为什么要加括号;

后来明白,要在函数体后面加括号就能立即调用,则这个函数 必须是函数表达式,不能是函数声明。

可以看到输出结果,在function前面加!、+、 -甚至是逗号等到都可以起到函数定义后立即执行的效果,而()、!、+、-、=等运算符, 都将 函数声明转换成函数表达式, 消除了javascript引擎识别函数表达式和函数声明的歧义,告诉javascript引擎这是一个函数表达式,不是函数声明,可以在后面加括号,并立即执行函数的代码。

加括号是最安全的做法,因为!、+、-等运算符还会和函数的返回值进行运算,有时造成不必要的麻烦。

不过这样的写法有什么用呢?

javascript中没用私有作用域的概念,如果多人开发的项目上,在全局或局部作用域中声明了一些变量,可能会被其他人不小心用同名的变量给覆盖掉。

根据javascript函数作用域链的特性,可以使用这种技术可以模仿一个私有作用域,用匿名函数作为一个"容器","容器"内部可以访问外部的变量,而外部环境不能访问"容器"内部的变量,所以( function(){…} )()内部定义的变量不会和外部的变量发生冲突,俗称"匿名包裹器"或"命名空间"。

JQuery使用的就是这种方法,将JQuery代码包裹在( function (window,undefined){…jquery代码…} (window)中, 在全局作用域中调用JQuery代码时,可以达到保护JQuery内部变量的作用。

以上内容是小编给大家介绍的javascript立即执行函数,希望大家喜欢。

JavaScript代码轻松实现网页内容禁止复制(代码简单) 以下代码非常简单,轻松实现网页内容禁止复制。有时候我们需要禁止别人复制网站的内容,以下代码可以轻松实现该功能!屏蔽鼠标右键functiondocument.

javascript跨域的方法汇总 此文章学习借鉴了一些其他前端同学的文章,自己做了个实践总结以下的例子包含的文件均为为

js窗口关闭提示信息(兼容IE和firefox) 很多时候,在浏览网页时,我们需要考虑用户不小心时关闭窗口的情况,特别是当用户有很重要的数据还没有保存,我们的程序有必要对用户进行提醒

标签: java scripts

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

上一篇:js判断手机号运营商的方法(js正则检验手机号)

下一篇:JavaScript代码轻松实现网页内容禁止复制(代码简单)(js代码示例)

  • 委托加工物资增值税纳税义务发生时间
  • 小规模免增值税是普票还是专票
  • 出口退税的条件有哪些
  • 发生了原材料运进和成品运出,但并未发生所有权
  • 啤酒消费税在那里征收
  • 发票用完了领发票需要带什么东西
  • 包工包料怎么开税票合适
  • 企业转让固定资产要交什么税
  • 金蝶k3生产领料单怎么导入
  • 预算分配比例与国库不一样
  • 个人购买房产是指什么
  • 商铺售后回租会计处理
  • 分税制的内容有哪些?
  • 开办费用怎么确定摊销年限及财务处理分析
  • 进项发票认证后暂不抵扣
  • 以汽车出资
  • 事业编人员贷款
  • 企业对外借款是怎么规定的
  • 抵扣上月留抵税额的分录
  • 源泉扣缴税率是多少
  • 企业被列为风险纳税人税控开票会显示什么
  • 汇算清缴是啥
  • 特许权使用费怎么入账
  • 美国税改“梦想”很丰满,显示很骨感
  • 广告服务增值税差额征税
  • 金蝶年结后发现错误怎么办
  • 会计档案保管最新规定
  • 以固定资产投资入股
  • 对个体工商户个人的认识
  • 银行融资成本计算方法
  • PHP:oci_new_collection()的用法_Oracle函数
  • chrome内核的浏览器是什么意思
  • php处理json
  • 外贸企业退税需要哪些资料
  • 苹果手机热点打不开是灰色的
  • 生产企业自营出口应税消费品
  • 建筑安装收入会计分录
  • 软件企业认定好处
  • php递归算法1加到100
  • vue3加ts
  • vue项目页面跳转
  • php 统计
  • 用css画一个扇形
  • 增值税发票没认证可以退回吗
  • 个人所得税大病医疗是什么意思
  • wordpress图片大小设置
  • 火车头造型
  • 零税率和免税的例子
  • 小规模差额征税的账务处理
  • 先给发票后付款做账
  • 租入的房子再出租用交房产税吗?
  • 应交增值税的结转怎么算
  • 停产工人工资计入哪个科目
  • 持有至到期投资账务处理
  • 实收资本没到账缴纳印花税吗
  • 车辆报废取得的收入增值税怎么算
  • 营业外支出会导致所有者权益减少吗
  • 快递费专票可以报销吗
  • 商业企业注销应检查哪方面的问题
  • sql存储过程实例详解
  • windows 10测试版
  • c盘满了怎么释放空间
  • 如何在mac上保存文件
  • linux网络管理及应用
  • mac如何修改
  • win7系统玩暗黑2怎样全屏
  • u盘运行win10系统
  • linux中sed命令
  • win7系统如何给文件夹加密
  • android按钮点击效果的实验报告
  • linux c程序开发
  • python中列表删除
  • css实战案例
  • android 重启app
  • dom操作中获取节点的方法有哪几种
  • android应用市场有哪些
  • onclick和onfocus
  • Dalvik VM (DVM) 与Java VM (JVM)之间有哪些区别
  • 房产税什么时候开始征收
  • 税控系统减免税报表里
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设