作用域:一个变量或函数可读写的区域
作用:读写;
域:空间、范围;
全局作用域:在哪里都可以读写(从上到下,从左到右);
全局变量:在函数外面声明的变量,
在函数内部申明,单没有使用关键字var;
全局函数:指的是在script标签内声明的,非函数嵌套
局部作用域:只能在特定区域内访问(特定区域,指的是函数),只有函数才能形成一个局部作用域(由里往外);if,for等语句不能形成作用域.
局部变量:在函数内部用var
局部函数:在函数里面声明的函数
只要存在域,就会重新发生一次与解析.
只要存在域,就会重新发生一次预解析
window下面的属性
同名的变量和函数的优先级问题:
同名的变量,下面的干掉上面的;
同名的变量和同名的函数,函数的优先级比较高
局部与全局的优先级:
优先使用局部的
作用域链:多个作用域嵌套会形成作用域链
最里面的这个变量往外面找值是沿着作用域链查找的;只有当在全局作用域也找不到,才会放弃查找,并报错;
生存周期:
全局作用域的生存周期:关闭页面才会销毁;
局部作用域的生存周期:函数执行完毕就销毁;
作用域由里往外,当形成一个新的局部作用域时,就由里往外的
匿名函数
函数表达式:
var 变量名= function(){
//函数体
}
变量名();
匿名函数:没有函数名的函数,不占用内存空间,执行完毕就销毁;
1.给其他函数调用
var abc = function(){
}
在定时器.延时器 setTimeout(function(){},时间) 函数内部使用(return一个函数出来,必报)
function abc(){
return function(){
alert(a)
}
}
var fun = abc();
fun();
2.自己调用自己,自调用函数
(匿名函数)();
(function(){
alert(a)
})()
函数申明:
function 函数命(){
}