前言
JavaScript总结笔记篇仅是记载本人学习过程中的一些总结,为了梳理一下知识点,督促自己不断加强学习。文中有些是源自官网,有些是搜集资料,有些是个人观点,难免存在某些知识点疏漏或者是有错误的地方,如果错误之处,希望看到的小伙伴能及时提个醒,避免误导其他小伙伴,也希望我的总结能帮助到正在学或者是将要学习JavaScript的小伙伴们!大家一起努力,早日成为IT界的大神!
js运行三部曲:语法分析、预编译、解释执行
一、预编译前奏
1.暗示全局变量:即任何变量,如果变量未经声明就赋值,此变量就为全局对象(window)所有。
eg:a = 123;
eg: var a = b = 123;
2.一切声明的全局变量,全是window的属性。
eg:var a = 123; ===>window.a = 123;
二、预编译
(一)过程
1.创建AO对象
2.找形参和变量声明,将形参和变量名作为AO对象的属性名,值为undefined
3.将形参和实参 统一
4.在函数体里面找函数声明,值赋予函数体
Ps:函数声明整体提升
变量 声明提升
var a;
document.write(a);
// 变量声明提升
// var a = 123;
a = 123;
function test (a, b) {
console.log(a); //fn
console.log(b); //undefined
var b = 234;
console.log(b); //234
a = 123;
console.log(a); //123
function a () {}
var a;
var b = function () {}
console.log(a); //123
console.log(b); //fn
}
test(1);
/* GO {
a : 10,
c : 234
} */
function test () {
console.log(b); //undefined
if (a) {
var b = 100;
}
c = 234;
console.log(c); // 234
}
var a;
test();
/*
AO {
b : undefined
}
*/
a = 10;
console.log(c); //234