PHP程序员小白到大牛集训(12期免息)
关闭广告
首页 >web前端 >js教程 > 正文

js的预解释是什么意思?浅析js中预解释的含义

原创2018-08-22 17:59:50884 + Vue前端学习QQ群(点击入群)
本篇文章给大家带来的内容是关于js的预解释是什么意思?浅析js中预解释的含义,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

之前经常会听到预解释,预解释,那么预解释到底是什么?今天就来浅谈一下下。
预解释也是我们平时说的变量提声,在当前作用域中js代码执行之前,浏览器首先会默认的把所有的带var和function的进行提前的声明或者定义,这个就可以叫做预解释。
那什么叫做声明,什么又叫做定义喃?
声明:比如

    var test
登录后复制

那这个就是在告诉浏览器我们在全局作用域中声明了一个叫test的变量

定义:比如

    test=2
登录后复制

给我们声明的变量进行赋值

那对于带var 和function关键字的,在预解释中,他们也是不一样的。带var 的在预解释中只是提前的声明,而function在预解释中既要声明,还要定义,这也就是为什么上面我们说 “ 提前声明定义 ”
举个例子

    var test = 2
    var obj = {"name":"代码"}
    function foo (val) {
        var test2 = val
        console.log(test2)
    }
登录后复制

以上代码在全局作用域中从上往下执行的时候预解释,首先声明一个 test,声明一个obj,再声明和定义一个foo。那么在foo里面的 var test2在全局作用域下会预解释吗?当然是不行的, 上面我们也说过了“ 在当前作用域中js执行 ”test2在foo的作用域中,只有当foo执行的时候才会预解释。所以预解释是只发生在当前作用域下的,只有函数执行的时候函数中的才会预解释。

所以我们可能出去面试的时候就会遇到一些这样的问题

    console.log(test )
    foo(5)
    var test = 2
    console.log(test )
    var obj = {"name":"代码"}
    function foo (val) {
        var test2 = val
        console.log(test2)
    }
登录后复制

那么打印出来的内容是什么喃?

    console.log(test )//undefined
    foo(5)//5
    var test = 2
    console.log(test )//2
    var obj = {"name":"代码"}
    function foo (val) {
        var test2 = val
        console.log(test2)
    }
登录后复制

因为刚开始的时候只是对test做了声明,但是没有对它进行定义,所以第一次console是undefind,但是后来到了第二次console的时候,已经把2赋值给了test,所以第二个console是有值的。而foo是function,在预解释的时候,既要声明又要定义,所以foo(5)是有值的。

相关推荐:

扒一扒JavaScript 预解释_javascript技巧

JScript中的条件注释详解_javascript技巧

以上就是js的预解释是什么意思?浅析js中预解释的含义的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

  • 相关标签:javascript
  • 程序员必备接口测试调试工具:点击使用

    Apipost = Postman + Swagger + Mock + Jmeter

    Api设计、调试、文档、自动化测试工具

    自己动手手写一个MVC框架(40节精讲/巨细/新人进阶必看):立即学习

    快速了解框架底层运行原理+提高自身开发逻辑+新人必学课程

    相关文章

    相关视频


    视频教程分类

    专题推荐

    官方公众号

    php中文网课程

    扫码关注官方公众号
    回复“phpcn01”领取php学习资料课程
    全套工具、电子书、脑图、内部课程等

    推荐视频教程

    开通VIP会员课 0元学

    热门推荐