首页 > 其他 > 详细

预解析的知识点

时间:2019-06-25 14:01:41      阅读:86      评论:0      收藏:0      [点我收藏+]

先分析函数形参(默认值为undefined),再分析形参赋值(没有形参的直接忽略此步骤)
   分析函数体中所有的变量声明:
2.1 如果变量名与形参名相同时,直接忽略var;
2.2 如果变量名与形参名不同时,就相当于声明了一个变量,如var foo,值为undefined;
      分析函数体中所有的函数声明,
3.1 如果函数名与变量名相同,函数整体将作为变量的值;
3.2 如果函数名与变量名不相同,相当于var 函数名 = function 函数名 () {};
       函数执行过程分为2步:
       词法分析过程;
       执行过程

 

变量声明及函数声明预解析时,变量解析为undefined,函数解析为其本身。
预解析时函数声明优先级高于变量声明,
函数声明会覆盖变量声明,但不会覆盖变量赋值。
如果声明变量的同时初始化或赋值那么变量优先级高于函数。

一、作用域概念、预解析规则、表达式
1、作用域概念
什么是作用域:简单说就是作用的范围,指的是函数在哪些范围内可以用,而在其他部分就不可以 使用,如果需要使用就需要重新定义。
作用域的作用是什么:用来执行读或者写的操作。
2、预解析规则
script:自上而下进行解析,
函数:由里到外进行解析。
但是浏览器在执行JS代码的时候会分成两部分操作:预解析以及逐行执行代码
预解析:浏览器在开始工作的时候会先解读JS代码的关键字:比如:var function 参数等,并把解析到的内容存入一个类似仓库的地方,这个过程一般称为JS预解析。
并且,在这个阶段所有的变量,在正式运行代码之前,都会提前赋值为未定义

函数在正式运行代码之前则是整个函数块。
在这个过程中如果函数和变量重名的话只会保留函数。
3.表达式
在将上边的问题的时候我们遇到一个现象:就是函数不会改变值,但是表达式却可以。
首先先来总结一下表达式有哪些?
表达式:= + - * / % ++ -- ! 参数……
作用:表达式可以修改预解析的值!

预解析的知识点

原文:https://www.cnblogs.com/yeanling/p/11081968.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!