变量提升
/* 变量提升 */
/* 当下面使用var的时候,会出现变量提升的情况 */
/* var a => a=undefined (已经声明,但是没有赋值,给了初始值undefined)*/
/* console.log(a);
var a ='123'; */
/*let 不存在变量提升,不能在还没有初始化的时候使用变量,否则就给报错
下面代码不会被执行*/
/* console.log(a);
let a ='123'; */
/* 函数是js里的一等公民 */
/* 申明function会提升函数到最前面 */
/* 页面一加载的时候,会先找有没有var和function,
如果发现 var 就会把变量预定义为undefined,
如果发现 function 就会把这个方法放最前面 */
复制代码
全局变量 局部变量
/* 全局变量,具有全局作用域 在函数外声明的变量,网页上的所有脚本和函数都能访问它*/
/* 全局变量在页面关闭后才被删除 */
/* 局部变量,具有局部作用域 (必须使用var )*/
/* 局部变量在函数运行后就被删除 */
复制代码
闭包
/* 闭包是指函数可以使用函数之外定义的变量*/
/* 一个函数可以理解为一个闭包 */
/* function fn(){
alert(1)
} */