全局作用域:当浏览器加载html页面的时候,首先会提供一个全局Js代码执行的环境.
//这个环境就是全局作用域(window);
var num = 12;
var obj = {name:"jack",age:6};
function fn(){
console.log(123);
return 123;
}
fn();
预解析:在当前作用域中,js代码执行之前浏览器首先会默认把所有带var和function的进行提前的声明或者定义.
1)理解声明和定义
var num = 12;
声明:declare:比如:上课,我们开始上课了,我讲东西了么?声明只是告诉当前的作用域我有个变量 var num-->告诉浏览器的全局作用域,有个一个变量num;
var 预解析时:只声明不定义(赋值);变量存在默认值 undefined;
定义:给我们的变量赋值
2)对于带var 和function关键字的,在预解析的时候操作是不一样的
var -> 在预解析的时候,提前声明但未定义.默认值undefined;
function ->在预解析的时候,提前声明+定义都完成了.