分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

JS预处理阶段、执行阶段的理解

发布时间:2023-09-06 01:26责任编辑:傅花花关键词:暂无标签

预处理阶段涉及到变量和(以函数声明方式声明的)函数的声明的提前的原理,并且涉及到声明变量冲突时候的一些问题。需要与执行阶段进行一定的区分,进而加深理解。

1. 预处理阶段将变量保存在window域中,会扫描用var操作符声明的变量以及用函数声明的方式声明的函数指针。因此会产生变量提前和函数声明提前的效果。

需要说明的是:

  • 如果变量并没有用var声明,如b = 1;那么即使在函数执行阶段将其默认为全局变量,在预处理阶段也不会将其添加到window域中。直到执行到这一条语句的时候,才会将其和对应的值添加。
  • 函数表达式用var声明,所以处理方式与用var声明的其他变量一样。
  • 这段代码:
var a = 1; ????b = 2;function f (){console.log("11");}var g = function(){console.log("22");};

   在预处理阶段window域的情况:

window{ ???f : 指向函数, ???a : undefined, ???g : undefined}

  在执行阶段window域的情况:

window{ ???f : 指向函数, ???a : 1, ???b : 2, ???g : 指向函数}

2. 如果声明发生冲突。那么在预处理的时候遵循两个规则:a. 先扫描函数,再扫描var声明的变量;b. 如果与之前的声明发生冲突的是函数,则覆盖;如果是var声明的变量,则忽略,如下面这段代码:

alert(f);function f(){ console.log("11"); }var f = 1;

  alert的将是"f(){console.log("11");}

JS预处理阶段、执行阶段的理解

原文地址:http://www.cnblogs.com/ideal-idiot/p/7889120.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved