变量声明提前
①所有全局变量中声明的变量作为window的属性值保存,可window.变量名调用;函数则作为window的方法保存,可window.函数名调用;
②变量声明时,不写var时,a=123;相当于window.a=123,换句话说,就算是在函数作用域里面直接赋值a=123,a也是一个全局变量;
③使用var 关键字声明变量,会在所有的代码执行之前被声明,但不会赋值;不写则不会;
函数声明提前
④使用函数声明形式创建的函数funtion f(){},会在所有的代码执行之前就被创建完成,可以在函数声明之前调用函数,与函数书写位置无关;但使用函数表达式形式的函数var f()= funtion(){},不会被提前声明与创建;
作用域
⑤在script中创建的变量函数对象都是全局作用量,在打开页面时创建,关闭页面时撤销;
⑥调用函数时创建函数作用域,函数执行完毕后作用域销毁;每调用一次函数就会创建一个新的函数作用域,他们之间时相互独立的;
⑦在函数作用域中能够访问到全局作用域的变量,但在全局作用域中无法访问函数作用域的变量;当在函数作用域中操作一个变量时,会遵守就近原则寻找变量,如果自身作用域中没有,就会向上一级寻找,直到找到变量;函数作用域中需要访问全局变量时,可以使用window.变量名 使用;