1)变量作用域
如果变量直接在script标签中定义,这个变量就属于“全局作用域范围”,它属于window对象而window对象是客户端浏览器对象模型的基类,是客户端JavaScript的"全局(顶级)对象"
"全局作用域范围"的变量是直到网页关闭或浏览器关闭时才释放资源,所以尽量少声明一些"全局变量",以免其过多占用消耗大量内存
1.1使用var 声明变量
<script type="text/javascript">
var a1=1;//"全局变量" 整个页面都可以用
function f() {
a1+=9;//用于检测n1的作用域范围
var a2=1; //局部变量,其作用域范围只在此方法中
}
f();//调用方法
alert(a1);//结果为 10
alert(a2);//结果 报错
</script>

IE浏览器报错信息
a2报错原因是a2变量有可能已被销毁,因为JS中也有垃圾回收机制,它会定时对可释放资源的变量自动回收;或者把变量赋值为null,表示此变量可以被垃圾回收机制将其回收销毁
1.2未使用var声明的变量
1.2.1 在方法中变量未使用var进行声明,此变量升级为"全局变量"
1.2.2 在选择循环(if,forswitch等)语句中使用var声明的变量也是"全局变量"
<script type="text/javascript">
/* var a1=1;//"全局变量" 整个页面都可以用
function f() {
a1+=9;//用于检测n1的作用域范围
var a2=1; //局部变量,其作用域范围只在此方法中
}
f();//调用方法
alert(a1);//结果为 10
alert(a2);//结果 报错 */
//==============================================
/* function f() {
a3 = 5;
alert(a3); //结果为 5
}
f();//调用方法
a3++;
alert(a3); //结果为6
*/
//循环语句中的变量
for (var i = 1; i < 2; i++) {
alert(i); //结果为1
var a4=1;
}
i++;
a4++;
alert(i);//结果为 2
alert(a4);
</script>
注意:JS中没有块级作用域范围
2)JS脚本调试
如果js中代码出现语法错误,则需要像C#代码一样进行调试;调试方式:
1 使用VS进行JavaScript的调试,设置断点,监视变量等操作和C#一样(默认浏览器必须是IE浏览器,浏览器可以使用脚本调试)
2 使用浏览器自带的调试功能;IE浏览器:"工具"->"开发人员工具"

IE调试工具
打开此窗口选择"脚本",在代码前面点击设置断点,再点击"启动调试"按钮,最后刷新网页

与C#中调试方式差不多(推荐使用此方式)