• JS中的预解析


    js预解析对于很多学习web前端开发的新手们很困扰,总是很难搞懂到底是个什么东西,今天零度就为大家简单的分析一下,争取让大家都明白!

    首先,看一下下面的代码:

    alert(a);
    var a = 1;

    这段代码大家认为运行时会弹出什么?相信很多人会回答”1“,其实弹出的是undefined!

    为什么呢?我们来分析一下:首先这段js代码是一个alert,我们知道alert是一个弹出函数,弹出后面括号里面的东西,这里面我们给了一个变量a,那么这个变量a的值是多少呢?这时,js解析器并不知道,所以它会返回一个undefined,也就是未定义的!

    再来看下面一段代码:

    alert(a);
    a = 1;

     这里,我们把变量定义的var去掉,在运行看看,发现竟然什么也没弹出,用各个浏览器的调试器一看,竟然报错!

     这又是为什么呢?

    原因其实就是js解析器会在页面js代码正式运行以前,进行预解析,会把页面中用var定义的变量,保存在一个”仓库“里,而当它遇到类似于”var a = 1;“这样的表达式的时候,才会给变量赋值。

    也就是说一开始的变量的值都是undefined。

    第二段代码为什么会报错呢?因为我们大家知道,不用var定义的变量,默认是全局变量,也就是说js解析器不会把这样的变量放在”仓库“中,所以当我们使用alert函数的时候,它就会报错!

    这下大家明白了吧,也就是说js解析器会在页面正式运行之前,把用var、function等定义的变量和函数先保存在”仓库中“,当运行到需要使用这些变量和函数的时候,js解析器会首先去”仓库“中寻找,如果”仓库“中的值是未定义的,它就会直接返回undefined!

    好了,用两个简单的例子向大家简单说明了js预解析的含义,如果大家还有不懂的地方,欢迎给我留言!

  • 相关阅读:
    LCD
    数组转字符串,字符串转数组
    谷歌浏览器中安装JsonView扩展程序
    获取文件后缀名(zip,rar等)
    jquery图片懒加载效果
    ajax 上传文件,显示进度条,进度条100%,进度条隐藏,出现卡顿就隐藏进度条,显示正在加载,再显示上传完成
    localStorage使用总结
    同源策略、跨域解决方案
    原生js获取到页面上所有的checkbox
    input="file" 浏览时只显示指定excel文件,筛选特定文件类型
  • 原文地址:https://www.cnblogs.com/lingdublog/p/6438066.html
Copyright © 2020-2023  润新知