有关作用域及变量提升

it2022-05-05  160

作用域:负责收集并维护由所有声明的标识符(变量) 组成的一系列查询, 并实施一套非常严格的规则, 确定当前执行的代码                 对这些标识符的访问权限。

js的变量和函数在编译阶段会被提升到当前作用域最前面编译,函数是一等公民,优先编译函数,js是按照script块编译的 

1. 只有声明的变量会提升,初始化的不会,JavaScript 严格模式(strict mode)不允许使用未声明的变量。

例如

var a=1

根据变量提升规则 var a,会被优先提升到作用域的顶部,之后会按照顺序执行 直到a=1执行完毕

所以 

function print(){ console.log(a) var a=3 } print()

 print()执行结果为 //undefined

2. 函数提升比变量提升优先级高

例如

function t1(age) { console.log(age); var age = 27; console.log(age); function age() {} console.log(age); } t1(3);

第一个console输出的是 //function age() 

第二个console输出的是 //27

第三个console输出的是 //27


最新回复(0)