<!DOCTYPEhtml><html><head><title></title><metacharset="utf-8"><scripttype="text/javascript">/*
作用域:
1. 作用域指一个变量的作用的范围
2. 在JS中一共有两种作用域:
(1)全局作用域:
直接编写在script标签中的JS代码,都在全局作用域中,
全局作用域在页面打开时创建,在页面关闭时销毁,
在全局作用域中有一个全局对象window,
让代表的是一个浏览器的窗口,它由浏览器创建,我们可以直接使用
在全局作用域中:
创建的变量都会作为window对象的属性保存
创建的函数都会作为window对象的方法保存
全局作用域中的变量都是全局变量,在页面的任意部分都可以访问的到
*/var b =456;functionfun(){var a =123;}fun();
console.log(a);var c =10;
console.log(window.c);// 10
window.fun();</script><style></style></head><body></body></html>
59 函数作用域
<!DOCTYPEhtml><html><head><title></title><metacharset="utf-8"><scripttype="text/javascript">/*
函数作用域:
调用函数时,创建函数作用域,函数执行完毕以后,函数作用域销毁
每调用一次函数就会创建一个新的函数作用域,他们之间是相互独立的
在函数作用域中可以访问到全局作用域的变量,在全局作用域中无法访问到函数作用域的变量
当在函数作用域操作一个变量时,他会现在自身作用域中寻找,如果有就直接使用,
如果没有就在上一级作用域中寻找,直到找到全局作用域,
如果全局作用域中依然没有找到,则会报错ReferenceError
在函数中要访问全局变量可以使用window变量
*/// 创建一个变量var a =10;functionfun(){var a ="函数中的变量a";var b =20;
console.log(a);functionfun2(){
console.log(a);
console.log(window.a);}}fun();/*
在函数作用域中也有声明提前的特性,使用var关键字声明的变量,会在函数中所有的代码执行之前先被声明
函数声明也会在函数中所有的代码执行之前执行
*/functionfun3(){fun4();
console.log(a);// undefinedvar a =35;functionfun4(){alert("fun4");}}fun3();/*
在函数中,不使用var声明的变量都会成为全局变量
*/var c =33;functionfun5(){
console.log(c);// 33
c =10;
d =100;// 相当于window.d}fun5();//在全局输出c
console.log(c);// 10
console.log(d);// 100var e =23;/*
定义形参就相当于在函数作用域中声明了变量
*/functionfun6(e){alert(e);}fun6();// alert undefined</script><style></style></head><body></body></html>
60 debug
<!DOCTYPEhtml><html><head><title></title><metacharset="utf-8"><scripttype="text/javascript">alert(d);var a =10;var b ="hello";
c =true;functionfun(){alert("hello");}var d =35;</script><style></style></head><body></body></html>