摘要:函数表达式不是以关键词开始一般出现在代码的中间部分五函数声明提升六函数声明优先级较高函数声明比变量声明的优先级高。如果两者同名,并且同时存在,后被提升的函数声明会覆盖先被提升的变量声明。阅读更多参考文章详解函数声明和函数表达式的区别
一、变量声明 1.1 var
最常见的变量声明方法,在关键词 var 后面紧跟一个变量名(也称之为变量的标识符)。1.2 undefined
(1)如上定义了一个名为test的变量,但未给这个变量进行初始化(也就是没有赋值),此时其默认初始化值为 undefined。
二、变量声明提升 2.1 hoisting(1)由于变量声明(以及其他声明)总是在任意代码执行之前处理,所以在代码中的任意位置声明变量总是等效于在代码开头声明。
(2)这意味着变量可以在声明之前使用,这个行为叫做“hoisting”。“hoisting”就像是把所有的变量声明移动到函数或者全局代码的开头位置。
(3)因此,建议始终在作用域顶部声明变量(全局代码的顶部和函数代码的顶部),这可以清楚知道哪些变量是函数作用域(本地),哪些变量在作用域链上解决。
(4)重要的是,提升将影响变量声明,而不会影响其值的初始化。当到达赋值语句时,该值将确实被分配。
三、函数声明 3.1 概念函数声明通过关键词 function 来声明,关键词后面紧跟的是函数的名称,名称后面有一个小括号(()),括号里面放置了函数的参数(para1,...,paramN)和一对大括号{...},函数的代码块就放在这个大括号内。3.2 示例
(1)function isEven(num) {...}是一个函数声明,定义了一个isEven函数。用来判断一个数是不是偶数。
四、函数表达式区分函数声明和函数表达式的规则:函数声明总是以function关键词开始,如果不是,那它就是一个函数表达式。
(1)函数表达式不是以function关键词开始(一般出现在代码的中间部分)
五、函数声明提升 六、函数声明优先级较高(1)函数声明比变量声明的优先级高。
(2)如果两者同名,并且同时存在,后被提升的函数声明会覆盖先被提升的变量声明。
阅读更多
参考文章 详解Javascript 函数声明和函数表达式的区别
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/94927.html
摘要:输出的结果为输出的结果为提升后输出的结果为重新定义了变量输出的结果为如果定义了相同的函数变量声明,后定义的声明会覆盖掉先前的声明,看如下代码输出练习的值是多少的值是多少第二题的解析请看这里参考资料文章文章中文版链接文章推荐文章变量提升 JavaScript 变量声明提升 原文链接 一个小例子 先来看个例子: console.log(a); // undefined var a =...
摘要:不同的是函数体并不会再被提升至函数作用域头部,而仅会被提升到块级作用域头部避免全局变量在计算机编程中,全局变量指的是在所有作用域中都能访问的变量。 ES6 变量作用域与提升:变量的生命周期详解从属于笔者的现代 JavaScript 开发:语法基础与实践技巧系列文章。本文详细讨论了 JavaScript 中作用域、执行上下文、不同作用域下变量提升与函数提升的表现、顶层对象以及如何避免创建...
摘要:函数和变量相比,会被优先提升。这意味着函数会被提升到更靠前的位置。仅提升声明,而不提升初始化。 JavaScript 函数高级——执行上下文与执行上下文栈(图解+典型实例分析) 变量提升与函数提升 变量声明提升 通过 var 定义(声明)的变量,在定义语句之前就可以访问到 值:undefined /* 面试题 : 输出 undefined */ var a = 3 ...
摘要:变量提升什么是变量提升在函数体内声明的变量,无论你是在函数的最底端还是中间声明的,那么都会把该变量的声明提升到函数的最顶端相当于第一行,但是只是提升变量的声明,不会赋值。 1、变量提升 什么是变量提升?在函数体内声明的变量,无论你是在函数的最底端还是中间声明的,那么都会把该变量的声明提升到函数的最顶端(相当于第一行),但是只是提升变量的声明,不会赋值。 var num = 10; fu...
摘要:但是碰到声明提升,这种想法就会被打破。声明一个函数进行相应的操作,会得到函数声明提升的结果。由此可以发现变量和函数的声明都会被提升在其他代码的前面执行。一个普通块内部的函数声明通常会被提升到所在的作用域的顶部。的创建初始化和赋值均会被提升。 Javascript声明提升 在分析声明提升之前,我认为有必要知道的两点: 一、引擎查询变量的两种方式 引擎查询变量的方式可以分为LHS和RHS两...
摘要:代码在执行时并不完全是由上到下一行一行执行的,由此产生了一个提升的问题。第二个赋值声明会被留在原地等待执行阶段。可以得知函数声明提升的优先权大于普通变量声明。 JavaScript代码在执行时并不完全是由上到下一行一行执行的,由此产生了一个提升的问题。 什么是提升 可以简单理解为:声明(变量和函数)都会被移动到各自作用域的最顶端,这个过程被称为提升。 具体例子看提升 下面两个例子a会l...
阅读 2042·2021-11-23 09:51
阅读 3672·2021-10-20 13:49
阅读 1680·2021-09-06 15:13
阅读 1795·2021-09-06 15:02
阅读 3047·2021-09-02 15:11
阅读 871·2019-08-29 15:37
阅读 1716·2019-08-29 13:24
阅读 2255·2019-08-29 11:28