变量提升
在js中,理解变量作用域以及变量提升是非常重要的,以下的几点需要我们认真掌握
- 变量作用域——一个变量的作用域表示它在这个变量存在的上下文,它指定了你可以访问哪些变量以及是否有权限去访问某些变量。
- 变量作用域分为全局作用域和局部作用域。
- 局部变量(处于函数级别的作用域,只是在函数内部使用)
- 一个函数内部定义的变量只能在函数的内部使用或者函数内部嵌套的函数调用(闭包除外)
案例
demo 1
demo 2
demo 3
demo 4
函数声明的优先级高于变量声明,如果这两者同时声明,函数声明会覆盖变量声明
|
|
以上代码实际执行的流程
var a = 1;
function show(){
var a;
console.log(a) //undefined
a = 2;
console.log(a) //2
}
show() //a is not defined
demo 5
demo 6
命名函数表达式
声明函数表达式的名字不会进入名字空间,外部的都取不到
12 var obj = function fn(){}alert(a) //a is not defined在函数的内部
1 var obj = function fn(){alert(a)}
demo 7
demo 8
函数声明的优先级>参数>var变量