测试JS变量的作用域范围

测试JS变量的作用域范围

1. 测试全局变量a与局部变量b的作用域范围

    var  a="a";
    function fn() {
        var b="b";
        alert(a);
        alert(b);
    }
    fn();               //a  //b
    alert(a);           //a
    alert(b);           //undefined
  • demo2、全局变量和局部变量同名时
      var a = "a";
    function fn() {
        alert(a);//  注意:Webstorm 提示变量可能未定义
        var a = "b";
        alert(a);
    }

    alert(a);       //a
    fn();           //**undefined**    //b

结论:**在javascript中,全局变量与局部变量同名时,
在函数域中,只能访问局部变量**

  • demo3、定义局部变量时,不使用”var”:局部变量自动被定义为全局变量.不推荐这样使用
  function fn() {
        b = "b";
        alert(b);   //b
    }
    alert(b)        //b   这里能得到b的值,所以b即为全局变量
  • demo4、改demo2 全局变量与局部变量同名时
  var a = "a";
    function fn() {
        alert(a);//  注意:Webstorm 提示变量可能未定义
        a = "b";
        alert(a);
    }

    alert(a);       //a
    fn();           //a   //b
  • demo5提示undefined和报错undefined的区别
 var  a="a";
    function fn() {
        var b="b";
        alert(a);
        alert(b);
    }
    alert(a);
    alert(b);//undefined
    fn();//fn没有输出,因为程序依次执行,上面程序变量未定义(undefined)
//提示:undefined:存在 ,但没有值。 相当于定义了函数但没有初始化值
//报错:undefined:不存在。
  • 案例:省市联动操作—全局变量与局部变量的应用
   var select=document.getElementById("city");
    select.onchange=function () {
        var optionVal=select.value;
        switch (optionVal){
            case 'bj':
                var area=document.getElementById("area");
                area.innerHTML="<option>bj1</option><option>bj2</option><option>bj3</option>"
                break;
            case 'sh':
                var area=document.getElementById("area");
                area.innerHTML="<option>sh1</option><option>sh2</option><option>sh3</option>"
                break;
            case 'tj':
                var area=document.getElementById("area");
                area.innerHTML="<option>tj1</option><option>tj2</option><option>tj3</option>"
                break;
            default:
                alert("error");
                break;

优化一下:

 var select=document.getElementById("city");
    var area=document.getElementById("area");
    select.onchange=function () {
        var optionVal=select.value;
        switch (optionVal){
            case 'bj':
                area.innerHTML="<option>bj1</option><option>bj2</option><option>bj3</option>"
                break;
            case 'sh':
                area.innerHTML="<option>sh1</option><option>sh2</option><option>sh3</option>"
                break;
            case 'tj':
                area.innerHTML="<option>tj1</option><option>tj2</option><option>tj3</option>"
                break;
            default:
                alert("error");
                 break;
        }

html页面:

<select name="" id="city">
    <option value="bj">bj</option>
    <option value="sh">sh</option>
    <option value="tj">tj</option>
</select>
<select name="" id="area">
    <option>bj1</option>
    <option>bj2</option>
    <option>bj3</option>
</select>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值