1. 使用var定义的变量是声明,没有使用var是给window或者gloable对象增加属性。
比如var a = 10; //定义一个变量名称为a
b= 20; // 给window对象增加一个属性并复制, 相当于window.b = 20; 所以在函数内部使用 b= 20的时候,在函数外部仍然可以访问到b。
2.
函数的的生命周期分为创建和执行两个阶段。
在函数创建阶段,JS解析引擎进行预解析,会将函数声明提前,同时将该函数放到全局作用域中或当前函数的上一级函数的局部作用域中。
在函数执行阶段,JS引擎会将当前函数的局部变量和内部函数进行声明提前,然后再执行业务代码,当函数执行完退出时,释放该函数的执行上下文,并注销该函数的局部变量。
3.注意:如果变量名和函数名声明时相同,函数优先声明。
4.如果一个函数返回一个方法,那么new这个函数后得到的是返回的新函数的this,如果返回null或者undifiend那么还是这个函数的this