函数的预解析
声明式的函数预解析时,整个函数将被提升到script标签内的最上面
赋值式的函数预解析时,将赋值的变量提升到script标签内的最上面,后面的赋值函数忽略
变量预解析:将声明的变量提升至script标签内的最上方
console.log(a) //由于变量的预解析,故此处打印的是undefined
var a=10
console.log(a) //由于上面已经进行赋值,故此处打印的是10
var b=10
console.log(b) //10
var b=function(){
console.log("aa") //aa
}
console.log(b)
b() //函数调用
作用域:全局作用域和局部作用域
局部作用域:整个页面,只有当页面关闭时,全局作用域才会失效
局部作用域:全局作用域中又划分出的小范围的作用域,函数内部可以创建局部作用域,到目前为止,也只有函数内部可以创建局部变量
全局变量可以在函数内部进行访问,但是函数内部定义的变量不能在函数外部进行访问
变量采取的是就近原则; 例:
var a="张三"
function test_1(){
var a="李四"
console.log(a) //李四
function test_2(){
a="王五"
}
console.log(a) //李四
}
test_1()
console.log(a) //张三
自动化转换成全局变量;不同script也可调用,此为全局
<script>
function test_3(){
num=100
}
test_3()
console.log(num) //100 自动化转换成全局变量
var c=200
</script>
<script>
console.log(c) //200
</script>