JavaScript立即执行函数的解释分析(1)—表达式与语句的区别

JavaScript 函数解析:声明、区别、回调与立即执行 本文全面介绍了 JavaScript 中的函数。涵盖函数的基本介绍、三种声明方式、命名函数等的区别、回调函数以及 IIFE,并结合案例分析,为开发者深入理解和运用函数提供了丰富的知识和实用的参考。 阅读详情
说明

我们应该经常看到这两种写法

(function(){

})()

(function(){

}())

也许你知道,这是立即执行函数,但为什么这样能立即执行呢?也许是该好好聊聊了!但是,我们先来聊点其他的。

表达式

表达式(expression),JavaScript解释器会将其计算出一个结果。程序中的常量是最简单的一类表达式。

原始表达式

最简单的表达式是“原始表达式”(primary expression)。原始表达式是表达式的最小单位——它们不再包含其他表达式。JavaScript中的原始表达式包含常量或直接量、关键字和变量。

1.23  			//数字直接量    
"hello"			//字符串直接量   
/pattern/   	//正则表达式直接量  
true			//关键字  返回布尔值:真  
false			//关键字  返回布尔值:假  
null			//关键字  返回布尔值:空   
i				//变量  返回变量i的值   
sum				//变量  返回变量sum的值   
undefined		//变量  undefined是全局变量  

对象和数组的初始化表达式

对象和数组初始化表达式实际上是一个新创建的对象和数组,这些初始化表达式有时称做“对象直接量”和“数组直接量”。但是它们不是原始表达式,因为它们所包含的成员或者元素都是子表达式。

[]   			//一个空数组     
[1+2,3+4]		//拥有两个元素的数组     

对象初始化表达式和数组初始化表达式很类似,只是方括号被花括号代替,并且每个子表达式都包含一个属性名和冒号作为前缀。

var p={ };		//一个空对象    
var q={x:2,y:3}	//一个拥有两个属性成员的对象    

函数定义表达式

函数定义表达式定义一个JavaScript函数。表达式的值就是这个新定义的函数。
var a=function (x){ console.log(x) }
上面这种函数定义方式是用函数表达式来定义的,一会我们还会说另一种通过函数语句来定义的方式。

属性访问表达式

属性访问表达式运算得到一个对象属性或一个数组元素的值,有两种方式。
第一种,一个表达式后跟随一个句点和标识符。表达式指定对象,标识符指定要访问的属性的名称。
expression . identifier
第二种,一个表达式后跟随一个方括号,方括号内是另一个表达式(这种方式适用于对象和数组)
expression[ expression ]

var o={ x:1,y:{z:3} };	//示例对象
var a=[o,4,[5,6]];	//一个包含对象的示例数组
o.x;		// => 1: o的x属性
o["x"];	   // => 1: o的x属性
a[0].x;  // => 1: a[0]的x属性

调用表达式

调用表达式是一种调用(或者执行)函数或方法的语法表示。

f(0)     //f是一个函数表达式;0是一个参数表达式  
a.sort() //a.sort是一个函数,它没有参数

对象创建表达式

对象创建表达式(object creation expression)创建一个对象并调用一个函数(这个函数称为构造函数)初始化新对象的属性。它和调用表达式非常类似,只是在前面了一个new。

new Object()    
new Point(2,3)  

如果对象创建表达式不需要传入任何参数给构造函数,圆括号可以省略。
new Object

语句

语句是JavaScript整句或命令,JavaScript语句用分号结束,语句用来执行以使某件事发生。

表达式语句

“使某件事发生”的一个方法是计算带有副作用的表达式。诸如赋值和函数调用这些有副作用的表达式,是可以做为单独的语句的,这种表达式当语句的用法也称为表达式语句。

声明语句

声明语句用来声明新变量或定义新函数,var和function都是声明语句,它们声明或定义变量或函数。

var i;		//一个简单的变量
var j=2;	//一个带有初始值的变量
function f(j){ return j+1;} //函数声明语句定义函数

复合语句和空语句

JavaScript中可以将多条语句联合在一起,形成一条复合语句,只需要用花括号将多条语句括起来即可

{
	x = Math.PI;
	cx = Math.cos(x);
	console.log(x+cx); 
}

;表示空语句,JavaScript解释器执行空语句时,不会执行任何动作,当创建一个具有空循环体的循环时,空语句很有用。

条件(conditional)语句

JavaScript解释器可以根据一个表达式的值来判断是执行还是跳过这些语句,如if语句和switch语句。

循环(loop)语句

可以重复执行语句,如while和for语句。

跳转(jump)语句

可以让解释器转至程序的其他部分继续执行,如break、return、和throw语句。

总结

表达式计算一个值,但语句用来执行以使某件事发生。 它们并不是完全没有关系的两个东西,看图。
这里写图片描述

javascript 用函数语句和表达式定义函数的区别详解 使用javascript多年,写过无数函数,今天却才真正弄明白两种函数定义的区别,真是悲剧,写下这个随笔, 以时刻提醒自己要打好基础 , 一大把年纪了, 不能继续懵懵懂懂了。 通常我们会看到以下两种定义函数的方式: 代码如下:// 函数语句function fn(str){  console.log(str);}; // 表达式定义var fnx=function(str){  console.log(str+ ‘ from fnx’);};以前都是凭借自己手指的感觉随心所欲使用两者 -_- || ,今天看了js基础, 总算是解决了心中对他们的困惑: 两种方式都创建了新的函数对象, 但函数声 立即下载

相关推荐

Notepad++ XML Tools插件:手把手教你格式化混乱XML与一键语法检查(保姆级教程)

本文详细介绍了如何使用Notepad++的XML Tools插件格式化混乱的XML文件并进行一键语法检查。通过插件安装、格式化实战和语法排错的完整流程,帮助开发者高效处理XML数据,提升API通信和数据存储的工作效率。特别适合需要快速验证和整理XML配置的开发人员。

weixin_42619742的博客 329

JavaScript 中的匿名函数、函数表达式与立即执行函数详解

匿名函数是指没有名字的函数。通常,这些函数是作为参数传递给其他函数,或者在定义后立即执行。匿名函数:没有名称的函数,通常作为函数表达式使用。函数表达式:将一个函数赋值给一个变量,它可以是匿名的,也可以是具名的。函数表达式可以通过变量调用。立即执行函数 (IIFE):定义后立即执行的函数表达式,通常用于创建局部作用域,避免污染全局作用域。IIFE 可以用普通函数或箭头函数表示。这些技术在编写清晰、简洁和高效的 JavaScript 代码时非常重要,尤其是在处理作用域、闭包和异步编程时。

m0_62599305的博客 1037

从INCA到Excel:手把手教你移植汽车标定数据的查表插值算法(附源码)

本文详细介绍了如何将汽车标定数据从INCA平台移植到Excel,实现查表插值算法的完整迁移。通过解析INCA MAP数据结构,设计Excel环境下的双线性插值算法,并提供VBA和C#两种实现方案,帮助工程师高效处理标定数据。文章包含实用代码示例和性能优化技巧,适用于ECU开发与标定场景。

weixin_29313239的博客 411

js 之IIFE 立即执行函数表达式

http://www.jb51.net/article/75089.htm https://www.cnblogs.com/lodingzone/p/5341143.html 1、IIFE的全称是Immediately-invoked Function Expression,立即执行函数表达式 2、传统方式比较麻烦,定义和调用是分开的;传统的方法还会直接污染全局命名空间(浏览器里的 g...

BusyMonkey 633

Imatest-Star模块(西门子星图)

星图分析指南:基于ISO12233标准的MTF测试方法,通过放射状射线和正弦灰度变化评估相机SFR性能。

weixin_64706696的博客 1574

【Ultrascale+ MPSOC学习记录】10、PS端以太网使用lwip

还是参考ALINX教程,学习PS端以太网如何使用,从教程中可以看到,开发板使用了一个xilinx默认不支持的phy JL2121,所以需要修改lwip的库源码。

ryo891012的博客 882

js语句和表达式分别是什么,区别是什么,什么时候需要用分号作为结束标志呢?

表达式:是由运算元和运算符(可选)构成,并产生运算结果的语法结构。以下在ES5中被称为基本表达式(Primary Expression)this、null、arguments等内置的关键字变量。即一个已声明的标识符字面量。仅包括数字字面量、布尔值字面量、字符串字面量、正则字面量分组表达式,即用来表示立刻进行计算的这类表达式是原子表达式,是无法再分解的表达式。除基本表达式以外,还有如下表达式,称为复...

前端黄晨琼的博客 433

简单VASP计算INCAR设置(结构优化OPT、静态自洽SCF、能带BAND、态密度DOS)

改变 K 点、NBANDS、晶胞、ENCUT、POTCAR、自旋或 SOC 后要检查兼容性。该参数不参与物理计算,因此不会改变总能量、受力、应力或最终结构。如果研究的是金属、磁性材料、表面、二维材料、分子、缺陷、DFT+U、杂化泛函或强自旋轨道耦合体系,部分参数必须调整。适合已经用 IBRION = 2 预优化、力较小、自由度较多的结构。在 IBRION = 1、2、3 中,它只是内部缩放因子。“不能修改”不是程序禁止修改,而是修改后会改变理论模型、数值精度或能量参考,使结果不能直接比较。

weixin_51420530的博客 125

表达式和语句

本文主要介绍一下内容。

weixin_48302551的博客 764

【论文翻译】YOLO26: KEY ARCHITECTURAL ENHANCEMENTS AND PERFORMANCE BENCHMARKING FOR REAL-TIME OBJECT DETEC

本研究对Ultralytics YOLO26进行了全面分析,重点阐述了其在实时边缘目标检测领域的关键架构改进与性能基准测试结果。YOLO26于2025年9月发布,是YOLO系列中最新、最先进的模型,专为在边缘设备和低功耗设备上实现高效能、高精度和部署就绪性而设计。论文依次详细介绍了YOLO26的架构创新,包括移除分布焦点损失(DFL)、采用端到端无非极大值抑制(NMS)推理、集成渐进式损失(ProgLoss)和小目标感知标签分配(STAL),以及引入MuSGD优化器以实现稳定收敛。

Limiiiing的博客 1688

YOLO11改进-注意力-引入Deformable Large Kernel Attention (DLKA) 解决多尺度、小目标、遮挡等问题

Deformable Large Kernel Attention (DLKA) 是一种用于视觉任务的注意力机制,旨在提升模型在处理不同尺寸和形状对象时的灵活性和性能。DLKA 的设计灵感源自传统的注意力机制,但通过引入可变形核(deformable kernel)来增强对局部特征的适应能力。

qq_64693987的博客 4042

语句和表达式有什么不同

JavaScript中的语句和表达式有什么不同之处?对于这个问题,我似乎知道答案,但当我尝试向别人解释时,我却语塞了。对于这个问题我有一种感觉,但无法清晰的表达出来。我后来才意识到,这个问题极其重要。它可以说是房屋的承重墙,将有助于支撑大量的JavaScript知识。对React开发者来说,更为如此。你不得不记住的那些JSX规则,以及总是忘记遵守的那些规则,大部分都是语句/表达式双重性的结果。在这篇文章中,我将分享我对这两者区别的一些感悟,以及我们如何在日常工作中使用这些信息。if/elsefor。...

www_xuhss_com的博客 2067

AUTOSAE软件配置-达芬奇( DaVinci Configurator)从新建工程开始

方法1,直接使用案例工程,一般SIP包会有一个创建好的案例工程,在这样的路径YOUR_SIP_DIR/Applications/SipAddon/StartApplication下面直接打开这个*.dpa文件即可看到已经预先做好的工程:但是,这个也不是全的,也不一定完全正确,至少MCAL是没有配置好的(MCAL是IC厂商提供的,并不归属SIP包的一部分)。这样就需要你自己去配置你想要的模块,修改里面的错误。

m0_49148264的博客 2948

JS中立即执行函数和闭包的区别

函数声明 规则:必须指定一个函数名字 foo(); function foo() { console.log("函数声明") } 由于函数声明会被提升,所以调用函数可以在之前或之后调用 函数表达式 规则:将函数赋值给一个变量 var foo = function () { console.log("函数表达式") } foo() 由于函数表达式,只会对变量foo进行提升...

刘运召的博客 6827

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

JS立即执行函数表达式IIFE(Immediately Invoked Function Expression)(JSX立即执行函数)箭头函数写法

IIFE是的缩写,意思是“立即执行的函数表达式顾名思义,它定义完就立刻执行,不需要再单独调用。");})();这段代码定义了一个匿名函数,然后立刻执行它。在函数外层加上一对小括号(),告诉 JavaScript 引擎:“这是一个表达式,不是普通函数声明。");}();就会报错,因为单独的function开头在语法上是函数声明,声明不能直接调用。加上括号,就变成了表达式形式,可以立即执行。IIFE 是一种定义并立即执行的函数表达式。

Dontla的博客 812

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

33-js-concepts表达式与语句:JavaScript语法核心概念深度解读

在JavaScript开发中,你是否曾经遇到过这样的困惑: - 为什么有些代码可以赋值给变量,而有些却不行? - 为什么函数声明可以在定义前调用,而函数表达式却会报错? - 为什么箭头函数和普通函数在行为上存在差异? 这些问题的根源都指向JavaScript中两个最基本但至关重要的概念:**表达式(Expression)**和**语句(Statement)**。理解它们的区别不仅是掌握JavaS...

gitblog_00753的博客 793

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

js立即执行函数

关于立即执行函数 立即执行函数执行后即消失,不能重复调用,有形参、实参、返回值 立即执行函数的两种形式: 第一种: (function (a,b) { //a b为形参 }(1,2)); //1 2为实参 第二种: ( function () { })(); 注意:只有表达式才能被执行 关于函数声明与函数表达式: 函数声明: function test(){ } 函数表...

weixin_43656326的博客 181

【JavaScript】深入了解JavaScript中的匿名函数、立即执行函数和闭包

深入了解JavaScript中的匿名函数、立即执行函数和闭包JS中函数两种命名方式:声明式和表达式匿名函数匿名函数作用:1.用作函数表达式2.作为返回值3.用作定义对象方法4.作为回调函数5.用于立即执行函数6.用于DOM元素注册事件立即执行函数立即执行函数形式1. 将匿名函数包裹在一个括号运算符中,后面再跟一个括号。2. 匿名函数后面跟一个括号,再将整个包裹在一个括号运算符中。立即函数的作用闭包经典案例分析闭包闭包特点闭包的创建闭包形式1.直接以匿名函数的形式作为外部函数的返回值(普遍用法)2.在外部函数

我没有头发的博客 1191

08-JavaScript立即执行函数

###一、立即执行函数 立即执行函数(IFIE):此类函数没有声明,在一次执行之后会立即释放。适合做初始化工作。 我们平常所见的函数执行一般都是函数名加小括号,其实我们的立即执行函数与我们平时调用执行函数时的形式是一样的,让我们来看一下我们常见的几种立即执行函数的写法: //第一种w3c标准推荐的写法 ( function(){ }() ) //第二种常规写法 ( function(){ }...

是是是刘翼的博客 217

JavaScript立即执行函数的解释分析(2)—函数表达式与函数声明的区别

说明上次我们聊了聊表达式与语句的区别,这次我们说说函数表达式与函数声明,上次虽然提到过这两点,但是并没有很详细的讲,这次要专门聊聊了!函数表达式(函数定义表达式)函数定义表达式定义一个JavaScript函数。表达式的值就是这个新定义的函数。 比如,像这样 var a=function (x){ console.log(x) } 函数声明说函数声明,就要提到上次我们说过的声明语句了,声明语句用

FEWY的博客 2万+

avaScript函数声明与立即执行解析

JavaScript函数声明方式包括函数声明、函数表达式和Function构造函数。立即执行函数表达式(IIFE)通过将函数声明转换为表达式实现立即执行,常见写法如(function(){})()。函数声明会被提升而函数表达式不会,IIFE常用于模块模式和避免全局污染。现代JS推荐使用ES6模块化替代IIFE。解析器将带括号的function识别为表达式从而允许立即执行。掌握这些概念对理解作用域和闭包很重要。

油墨香^-^的博客 878

深入剖析立即执行函数的执行方式

表达式 讲立即函数之前,首先来理解什么是表达式 表达式: 指的是可以被求值的代码,也就是说只要代码能求得(返回)一个值的,它就是表达式。 例子: 以下都是表达式,这里只举一部分例子。 var a = 10 //赋值表达式,它的结果就是 10 a; //变量表达式,它的结果就是10 123; //也是表达式 它的结果就是它本身 'abc'; //字符串表达式 结果是自身 var arr = [1,2,3]; //数组创建表达式,结果是数组的引用地址 a[1]; //数据访问表达式,它的结果就是2

androidioskl的博客 502

JavaScript学习笔记——函数、立即执行函数、作用域、预编译—day two

目录 函数 定义 组成形式 递归 立即执行函数 作用域 变量作用域 函数作用域[[scope]] 作用域链 预编译 JS运行分三步: 预编译执行分五步: 函数 原则:高内聚弱耦合(重复) 定义         函数声明(用function声明函数)         函数表达式 三种定义方式: function test(){ ...

Cloud 1096

函数表达式和函数声明有什么区别?

1.背景介绍 函数声明 函数声明可以定义命名的函数变量,而无需给变量赋值。函数声明是一种独立的结构,不能嵌套在非功能模块中。可以将它类比为 变量声明。就像变量声明必须以“var”开头一样,变量声明必须以“function”开头。函数名在自身作用域和父作用域内是可获取的。   函数表达式 函数表达式将函数定义为表达式语句(通常是变量赋值)的一部分。通过函数表达式定义的函数可以是命名的,也可...

storyoco的博客 1万+

DOM、正则表达式、闭包、立即执行函数、this

立即执行函数和函数被当成值传递的共性:作用域,函数定义,(函数传递),函数执行。函数的定义和执行也是在不同的作用域;重点在于传递,(从函数行为和过程去定义)函数被传递到其他作用域后执行,就会产生闭包。(从结果上定义)能够读取其他函数内部变量的函数特性。总结一下,闭包就是:函数被传递到其他作用域后执行,仍保持对其定义时作用域的访问的过程。tip:初学者常因着重点不同产生误解。

m0_65025332的博客 352
上一篇: JavaScript 数组去重的多种方法原理详解
下一篇: JavaScript立即执行函数的解释分析(2)—函数表达式与函数声明的区别
FEWY
FEWY 领域专家: 前端开发技术领域 领域专家: 前端开发技术领域
博客等级 码龄10年 504粉丝 77原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值