/*
* 函数作用域
* - 调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁
* - 每调用一次函数就会创建一个新的函数作用域,他们之间是相互独立的
* - 在函数作用域中可以访问到全局的作用域的变量
* 在全局作用域中无法访问到函数作用域的变量
* - 当在函数作用域操作一个变量时,它会先再自身作用域中寻找。如果有就直接使用
* 如果没有则向上一级作用域中寻找,直到找到全局作用域
* 如果全局作用域中依然没有找到,则会报错ReferenceError
*
* - 在函数中要访问全局作用域中的变量可以加window.x来调用
*/
//创建一个变量
var a = 10;
function fun(){
var a= "我是函数中的变量a";
// var b = 20;
// console.log(“a =”+a);
function fun2(){
console.log("a = "+window.a);
}
fun2();
}
fun();
/*
* 在函数作用域中也有声明提前的特性
* 使用var关键字声明的变量,会在函数中所有diam执行之前被声明
*/
function fun3() {
fun4()
var a;
console.log(a);
var a = 35;
function fun4(){
alert("I'm fun4")
}
}
fun3();
// console.log(b);
var c = 33;
/*
* 在函数中,不适用var声明的变量都会成为全局变量
*/
function fun5(){
console.log("c ="+c);
c = 10
//d没有使用var关键字,则会设置为全局变量
d = 100;
}
fun5();
//在全局输出c
console.log(c);
console.log(d);
var e = 23;
/*
* 定义形参就相当于在函数作用域中声明了变量
*/
function fun6(){
alert(e);
}
fun6();