首页
学习
活动
专区
工具
TVP
发布

JavaScript(js函数声明与函数表达式的区别

在JavaScript中,函数是经常用到的,在实际开发的时候,我想很多人都没有太在意函数的声明与函数表达式的区别,但是呢,这种细节的东西对于学好js是非常重要的。...函数声明与函数表达式用代码写出来是这样的: //函数声明 function say(){ console.log("函数声明") } //函数表达式 var say1 = function(){...注意,我们是调用的函数表达式,这样的结果是会报错,为什么呢?...至于下面这种函数表达式,为什么在函数表达式上面执行会报错呢?来看看下面的代码 console.log(a) var a=1; 这段代码的执行结果是什么呢?...undefined,这是不是很像我们的函数表达式了,其实,如果说我们在函数表达式之前也打印一下这个say1(),结果也是undefined,原因就是带有var 的变量,当然这里说的是全局变量,它在预解析的时候会有一个变量提升

77930
您找到你想要的搜索结果了吗?
是的
没有找到

JS函数声明与函数表达式的不同

Js中的函数声明是指下面的形式: function functionName(){ }         这样的方式来声明一个函数,而函数表达式则是类似表达式那样来声明一个函数,如: var functionName...事实上,js的解析器对函数声明与函数表达式并不是一视同仁地对待的。...对于函数声明,js解析器会优先读取,确保在所有代码执行之前声明已经被解析,而函数表达式,如同定义其它基本类型的变量一样,只在执行到某一句时也会对其进行解析,所以在实际中,它们还是会有差异的,具体表现在,...当使用函数声明的形式来定义函数时,可将调用语句写在函数声明之前,而后者,这样做的话会报错。

1.4K20

JS函数声明与函数表达式的异同

不同点 注:函数声明和函数表达式的不同点包括但不限于以下几点 相对函数声明和函数表达式之间的相同点,它们的不同点更应该值得我们关注。下面我结合自己的理解聊聊。...函数声明必须有标识符,也就是常说的函数名;函数表达式可以省略函数名。 关于它们的定义的不同小伙伴们应该都知道,我们简单重复一遍。...例子的话还是前文的说真话函数: 即函数声明的话sayTruth()可以提前调用,就是不请自来的那种,而函数表达式是什么时候遇到什么时候执行。...注意,括号里面的是表达式。 (function(){ alert('博主的名字是:myvin 。'); })() 事实上,js的解析器对函数声明与函数表达式并不是一视同仁地对待的。...对于函数声明,js解析器会优先读取,确保在所有代码执行之前声明已经被解析,而函数表达式,如同定义其它基本类型的变量一样,只在执行到某一句时也会对其进行解析,所以在实际中,它们还是会有差异的,具体表现在,

1.1K50

JS 中的函数表达式函数声明你混淆了吗?

1.函数表达式vs函数声明 函数声明和函数表达式是使用 function 关键字创建函数的2种方法。...但是sumB是使用函数表达式创建的(将其包装在括号中),该函数表达式不会在当前作用域内创建函数变量。 如果你想访问使用函数表达式创建的函数,那么将函数对象保存到一个变量中: // Works!...,否则为函数表达式。...3.函数表达式 当function关键字在表达式内部创建函数(带有或不带有名称)时,将出现函数表达式。...: 如果表达式中的函数没有名称,例如 function(){return 42},那是一个匿名函数表达式 如果函数具有名称,例如 上一个示例中的sumB和回调,那么这是一个命名函数表达式 3.1 函数表达式的注意事项

69830

JS函数

(){ console.log("hello js") } sayHello() 参数 形式参数 : 在函数声明时, 设置的参数。...//带参数的函数声明 function 函数名(形参1, 形参2, 形参...){ //函数体 } //带参数的函数调用 函数名(实参1, 实参2, 实参3); 计算2个数的和 ...函数作用域 :在 函数内的区域 叫做函数作用域,在函数作用域内声明的变量叫做局部变量 ,局部变量只有在当前函数内才能访问到。...预解析 js执行代码分为两个过程: 预解析过程(变量与函数提升) 代码一行一行执行 console.log(num); var num = 1 console.log(num) 预解析过程 把var声明的变量提升到当前作用域最前面...把函数声明提升到当前作用域的最前面。 如果函数同名 , 后者会覆盖前者 。 如果var声明的和函数声明的同名, 函数优先。

11K40

JS函数

函数定义        函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块;       函数就是包裹在花括号中的代码块       function 函数名()       {        ...这里是要执行的代码      } 二 函数的声明和调用    函数的声明必须使用关键字function    关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数    函数本身不会自动运行...,只有当调用该函数时,才会执行函数内的代码    函数可以通过其名字加上括号中的参数进行调用 三 带有返回值的参数      使用return 语句来返回值 可以将返回值赋值给一个变量,然后对变量进行操作...四 arguments对象    在函数代码中,使用特殊对象 arguments存储函数调用传递给该函数的所有参数   可以用 arguments 对象检测函数的参数个数,引用属性 arguments.length...sun+=arguments[i]; } return sun; } var s= sum(2,3,4,5);//虽然sum函数时没有参数的

5.2K20

灵活使用JS函数声明与函数表达式要弄清哪两点?

函数声明和函数表达式到底有什么区别? 要弄清函数声明和函数表达式的区别,首先要明白在JS中声明和表达式的行为存在十分微妙而又十分重要的差别。...所以不要在条件语句中使用函数声明,而可以使用函数表达式。...由于存在上述限制,只要函数出现在块中,实际上就可以看作是一个语法错误,而不用管什么函数声明或表达式。 所以较佳实践应是,不要把函数写在语句或块中,不管是声明函数还是表达式函数。...表达式函数里有匿名表达式函数和命名表达式函数。 所谓的命名函数表达式,指的是有名字的函数表达式,这个名字技术上称为标识符。...在实际开发中,函数声明和函数表达式可以灵活选择,只是需要理清两点:变量和作用域的提升问题,在函数表达式中注意匿名函数表达式和命名函数表达式的区别。

63530

函数表达式

下述内容主要讲述了《JavaScript高级程序设计(第3版)》第7章关于“函数表达式”。 一、回顾 定义函数的方式有两种:第一种是“函数声明”,另一种就是“函数表达式”。...“函数声明”会被提升,意味着把函数声明放在调用它的语句后面。...function function a() { console.log("a"); } var b = function() { console.log("b"); }; 声明本身会被提升,而包含函数表达式在内的赋值并不会被提升...函数提升的关键,就是理解函数声明与函数表达式之间的区别。...定义:指有权访问另一个函数作用域中的变量的函数。 当函数可以记住并访问所在的词法作用域,即使函数是在当前词法作用域之外执行,这时就产生了闭包。

45641

函数声明与函数表达式

函数声明与函数表达式 定义一个函数的方法主要有三种 函数声明、函数表达式、new Function构造函数函数声明与函数表达式定义的函数较为常用,构造函数的方式可以将字符串定义为函数。...s(){ console.log(1); } } 此处可以看到函数的声明被提升,但是函数体并未被提升,JS只有函数作用域与全局作用域以及ES6引入的let和const块级作用域...函数表达式 函数表达式只会提升变量的声明,本质上是变量提升并将一个匿名函数对象赋值给变量。...var s = function(){ console.log(0); } function s(){ console.log(1); } s(); // 0 在JS函数是第一等公民,...也就是说,同一作用域下提升,函数会在更前面。即在JS引擎的执行的优先级是函数声明、变量声明、变量赋值。

52540

js正则表达式

js正则表达式 目录 正则表达式定义及作用 字符串方法使用正则表达式 修饰符及模式 RegExp对象 实际用例 正则在线工具 正则表达式定义及作用 定义 使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式...语法 /正则表达式主体/修饰符(可选) 作用 文本搜索 文本替换 字符串方法使用正则表达式 search()方法 检索与正则表达式相匹配的子字符串,并返回子串的起始位置 代码实例 var...执行全局匹配(查找所有匹配而非在找到第一个匹配后停止) 修饰符可以叠加, 此处使用两个修饰符i,g 修饰符及模式 修饰符 i执行对大小写不敏感的匹配 g执行全局匹配 m执行多行匹配 表达式...匹配任何包含零个或一个n的字符串 RegExp对象 RegExp对象是一个预定义了属性和方法的正则表达式对象 test()方法 用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本...正则表达式在线生成工具 http://tools.jb51.net/regex/create_reg

7.3K30

函数声明与函数表达式

函数声明:直接声明一个函数 function fnName() {};function声明必须有方法名,而出现在表达式里的方法名都会被忽略。...函数表达式:通过赋值,将一个变量的引用指向一个指定的function或匿名函数,如: var fnName = function () {};//可以是匿名函数也可以是具名函数 分析下现两段代码: <script...return 'x'; } alert(a); 两者其实差异并不大,主要是在var a = function a() {}这一点上,IE与其它浏览器解析上存在差异,其中IE是无论是它作为函数表达式或是函数声明...可以理解为在解析代码段时,将var先提前进行声明,提到当前scope前面,然后再对函数表达式进行预解析。...想继续了解具名函数与匿名函数的,可以点击下面的链接查看我之前写的文章: hi.baidu.com/meteoric_cry/blog/item/65f8d3c4651d64a58326ac23.html

73540

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券