这句话咋理解呢,老师

这句话咋理解呢,老师

var声明的变量和function声明的函数在预解析的时候有区别,var声明的变量在预解析的时候只是提前的声明,function声明的函数在预解析的时候会提前声明并且会同时定义。也就是说var声明的变量和function声明的函数的区别是在声明的同时有没同时进行定义。         

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

动手测试测试代码会有有助你理解的,例如下面这段

<!DOCTYPE html>

<html>

<head>

  <meta charset="UTF-8">

  <title>Document</title>

</head>

<body>

  <script type="text/javascript">

    console.log(a);

    console.log(b);

    var a=1;

    function b(){

      console.log(1);

    }


  </script>

</body>

</html>

变量会在预解析中被提前声明,但是不执行赋值操作,所以在var的上面打印a,值为undefined。

而打印出来的b,就是一个函数体了。

  • 慕粉3125272 提问者 #1
    就是说函数在被声明的同时必须进行定义吗
    2018-04-12 16:12:16
  • 慕粉3125272 提问者 #2
    也就是说function在预解析的时候会带出整个函数体,但是这样做的意义是什么呢,换句话说,函数在预解析的时候,定义函数内部的代码有何意义呢,起到什么作用呢,内部的东西不是字调用的时候才会被定义吗
    2018-04-12 16:15:43
怎么都被占用了呢 2018-04-12 16:47:02

我这么给你解释吧:

常用的函数定义方式有3种:第一种是 function aa(){} 这是函数声明式。

第二种是 var aa=function(){} 这是函数表达式

第三种是 new Function() 这是函数构造式

只有第一种会被预解析,也就是函数声明提前。

不过看你的其他先关问答,做出如下总结:

你可以将这3种定义方式都理解为函数的声明,但是只有第一种会被提前声明,其他的2种需要执行到相关代码行才行。

至于预解析的时候,将函数内部的代码也定义了,这是浏览器执行的结果,是浏览器默认的机制。

  • 提问者 慕粉3125272 #1
    谢谢老师!至于预解析的时候,将函数内部的代码也定义了,这是浏览器执行的结果,是浏览器默认的机制。这句话起不到实质性的作用嘛
    2018-04-12 17:00:45
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师