美文网首页
Javascript 中函数声明的本质

Javascript 中函数声明的本质

作者: 奋斗_d30d | 来源:发表于2019-07-08 11:29 被阅读0次

Javascript是一门解释后运行的语言,要弄清楚函数声明的本质,就要知道函数声明会被怎么解释成什么样的语句来执行的。

分两种情况。

        1.在{}内单独声明函数,这种语句会解释成将函数赋值给与它的同名变量的语句,并将该条语句上移至它的父语句{}的最顶端。(注:{}符号可以属于函数的也可以属于表达式的,不轮那种都以{}符号为准)

        2.表达式(非{}表达式)中的声明函数(如(function fun(){...});var a=function fun(){...}; true?function fun(){...}; return function fun(){...}等等),不进行任何解析,位置也不变。

例1.

函数声明 函数声明解释后 变量声明提升后

如上:

function subFun(){}是在{}内单独声明的函数,解释后var subFun=function subFun(){}并将它提升到父语句{}之后。(变量名提升后,与函数解析无关,只是为了方便理解)

例2.

函数声明 函数声明解释后 变量声明提升后

如上:

function subFun(){}是{}内单独声明的函数,解释后var subFun=function subFun(){}并将它提升到父语句{}之后。(变量名提升后,与函数解析无关,只是为了方便理解)

例3.

赋值语句,函数声明不进行解释 变量声明提升后

如上:

        var sub=function subFun(){};表达式,所以它中的函数声明不会进行解释。由于变量声明提升的特性,会将var sub声明部分提升到函数作用域的顶部。

例4.

立即执行语句,不执行解释

如上:立即执行函数中function sumFun(){ console.log('a')}在表达式()内,所以不进行任何解释。

例5.

不进行任何解释

如上:函数function sumFun(){...}是在?:表达式内所以不进行任何解释。

例6.

报错无法解释

如上:根据逻辑var q={function sumFun(){console.log('a')}},但var q={...}这种赋值形式在js中是不存在的(JSX虚拟DOM语言就用这种方式赋值,利用JS没有的东西发明的一种语法。),是会报错的。因此会报错。

假设上面可以解释,function sumFun(){...}在{}内,所以会解析成var sumFun = function sumFun(){...},最后成为下面这样

虚拟解析后

以上就是函数声明解释的所有内容,是不是很简单。

相关文章

  • Javascript 中函数声明的本质

    Javascript是一门解释后运行的语言,要弄清楚函数声明的本质,就要知道函数声明会被怎么解释成什么样的语句来执...

  • ES5中认知上的一些遗漏点

    1. JavaScript 中对变量和函数声明的“提前(hoist) JavaScript 中对变量和函数声明的“...

  • 函数

    函数的声明 JavaScript中函数使用 function 关键字声明 匿名函数的声明 匿名函数声明语法: fu...

  • this指向以及react中绑定this

    JavaScript函数中的this 我们都知道JavaScript函数中的this不是在函数声明的时候定义的,而...

  • JavaScript 变量提升

    JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。JavaScript 中,变量可以在使用后声明...

  • JavaScript 变量提升

    JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。JavaScript 中,变量可以在使用后声明...

  • TypeScript简单入门(九):TypeScript函数的类

    函数声明在 JavaScript 中,有两种常见的定义函数的方式——函数声明(Function Declarati...

  • javascript 函数,构造函数,原型

    函数的声明 javascript 中函数有两种声明方式: 区别:声明方式定义的函数可以在函数调用之前也可以在函数调...

  • 作用域

    变量声明提升 在 JavaScript 中,函数声明(function aa(){})与变量声明(var)经常被 ...

  • 变量提升 & this指向

    变量提升 JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。JavaScript 中,变量可以在...

网友评论

      本文标题:Javascript 中函数声明的本质

      本文链接:https://www.haomeiwen.com/subject/iznnhctx.html