全局作用域 变量声明

<script type="text/javascript">
/*
* 作用域:
* 作用域指一个变量作用的范围 例1
* 在JS中一共有2种作用域
* 1.全局作用域
* 直接编写在Script标签里面JS代码,都在全局作用域中 例2
* 全局作用域在页面打开时创建,在页面关闭时销毁
* 例3 在全局作用域中有一个全局对象window(window浏览器的窗口,它由浏览器创建),我们可以直接使用
* 在全局作用域中,创建的变量都会作为window对象的属性保存 例4 例5
* 创建的函数都作为window对象的方法保存 例6
* 全局作用域中的变量都是全局变量,在页面的任何部分都可访问到
*
* 2.函数作用域
*/
// 例1:函数外面访问不到函数里面的东西
function fun(){
//a的作用域就在函数里
var a = 123 ;
}
fun();
// 外面看不到里面的a
console.log(a);

// 例2: 这3个都写在Script标签里面 都在全局作用域里
var a = 123 ;
var b = 456 ;
function fun (){

}

// 例3 : 如果不是undefind 都有
console.log(window);

// 例4:
var a = 10 ; //创建一个变量a会作为window对象的属性保存 a=10
console.log(a);
console.log(window.a); //访问window的属性

// 例5:
console.log(c); //直接访问c报错
console.log(window.c); //直接访问一个对象的属性undefined

// 例6:函数在全局作用里 此函数会作为window的方法保存
function fun (){
console.log('我是fun函数');
}
// fun();
window.fun(); //和fun都是一样的

// window.alert('a'); 和 alert('a') 一样
</script>

<!--变量声明-->
<script type="text/javascript">
/*
* 变量声明提前
* 使用var关键字声明的变量,会在所有的代码执行之前被声明 2.
* 但是如果声明变量时不适用var关键字,则变量不会被声明提前 3.
*
* 函数声明提前 4.
* 使用函数声明的形式创建函数function 函数名 (){}
* 它会在所有代码执行之前就被创建,所以我们可以在函数声明前调用函数
* 使用函数表达式创建的函数,不会被声明提前,所以不能在声明前调用
*/


// 1.
var a = 123 ; //不写var 就相当于window.a
console.log(a);

// 2.
// 相当于 var a ;
console.log(a); //先执行 a = undefined
var a = 123; //a = 123 ;

// 3.
console.log(a);
a = 123;

// 4.
function fun (){
console.log('我是一个fun函数');
};

var fun2 = function (){
console.log('我是一个fun2函数');
};

fun();
fun2();

// 4.
// 函数声明会被提前创建
// 写在前后无关
fun();
function fun (){
console.log('我是一个fun函数');
};

// 函数表达式不会被提前创建
// 会出现报错 会提前声明,但不会提前赋值
fun2();
console.log(fun2); //有这个变量
// 函数表达式
var fun2 = function (){
console.log('我是一个fun2函数');
};


</script>

猜你喜欢

转载自www.cnblogs.com/weixin2623670713/p/12659197.html
今日推荐