JavaScript预编译和暗示全局变量是如何影响代码执行和潜在错误的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计964个文字,预计阅读时间需要4分钟。
1. 隐式全局变量 + 未声明的变量称为隐式全局变量。 var a=1; // 函数体外声明的变量称为全局变量 b=2; // 函数体内未声明的变量称为隐式全局变量 // 无论函数体外或体内,未声明的变量都称为隐式全局变量 function fn() { var c=3; }
1. 暗示全局变量
未声明的变量称为暗示全局变量。
var a = 1; //函数体外声明的变量称为全局变量 b = 2; // 无论函数体外或函数体内未声明的变量都称为暗示全局变量 function fn() { var c = 3; //函数体内声明的变量称为局部变量 d = 4; // 暗示全局变量 } fn(); // 若不执行函数,则不会进行函数预编译,d 就不会提升为全局变量 console.log(c); // error: c is not defined console.log(d); // 4
2. JavaScript执行过程
1. 语法分析,若存在低级语法错误,则不编译执行;
2. 预编译,包括变量声明提前和函数声明提前;
3. 解释执行,解释一行,执行一行。
3. 预编译
预编译可分为全局预编译和函数预编译。
预编译可分为全局预编译和函数预编译。
本文共计964个文字,预计阅读时间需要4分钟。
1. 隐式全局变量 + 未声明的变量称为隐式全局变量。 var a=1; // 函数体外声明的变量称为全局变量 b=2; // 函数体内未声明的变量称为隐式全局变量 // 无论函数体外或体内,未声明的变量都称为隐式全局变量 function fn() { var c=3; }
1. 暗示全局变量
未声明的变量称为暗示全局变量。
var a = 1; //函数体外声明的变量称为全局变量 b = 2; // 无论函数体外或函数体内未声明的变量都称为暗示全局变量 function fn() { var c = 3; //函数体内声明的变量称为局部变量 d = 4; // 暗示全局变量 } fn(); // 若不执行函数,则不会进行函数预编译,d 就不会提升为全局变量 console.log(c); // error: c is not defined console.log(d); // 4
2. JavaScript执行过程
1. 语法分析,若存在低级语法错误,则不编译执行;
2. 预编译,包括变量声明提前和函数声明提前;
3. 解释执行,解释一行,执行一行。
3. 预编译
预编译可分为全局预编译和函数预编译。
预编译可分为全局预编译和函数预编译。

