javascript一段代码if,else的问题代码
大家讲道理
大家讲道理 2017-04-10 15:42:59
[JavaScript讨论组]
    var STATE = {
            IDLE: 1,
            READY: 2,
            ERROR: 3
    };
    var state = STATE.IDLE;
    var jssdk = {
        init: function(version,plt,arr){
            if(state==STATE.IDLE){  //这个地方的state为STATE.IDLE
                // do something 1
                try{
                    var array = JSON.parse(arr);
                }catch(e){
                    state = STATE.READY;
                    return;
                }
                for(var i in array){
                    var funcName = array[i];
                    jssdk[funcName] = (function(name){
                        return (function(paramObj){
                            if(state==STATE.READY){ // 这个地方的state为STATE.READY
                                // do something 2
                            } else{
                                //do something 3
                            }
                        });
                    })(funcName);
                }
                state = STATE.READY;  // 把这句注视掉就会有问题
            }
        }
    };

调试一段代码的时候,不知道为什么会执行到代码中的do something 2这个地方。当然,我是执行这个init方法的时候

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(3)
怪我咯

没看明白(:

大家讲道理

没有state = STATE.READY;的时候:
我加了个console

if(state==STATE.READY){ 
     // do something 2
      console.log("22222222222");
} else{
     //do something 3
}

这样运行的:

jssdk.init( '', '','{"init":"init", "aa":"a13"}');
jssdk.a13(); 

控制台并没有输出,加了state = STATE.READY;就会输出2222了。
楼主原来没有state = STATE.READY;的时候感觉没问题啊

PHP中文网

已经知道了答案,自己纠结太久了

jssdk[funcName] = (function(name){
                        return (function(paramObj){
                            if(state==STATE.READY){ // 这个地方的state为STATE.READY
                                // do something 2
                            } else{
                                //do something 3
                            }
                        });
                    })(funcName);

这个只是一个赋值,并没有去执行这个东西,我一直当作执行来做的。但是我们执行的时候,那个state的值已经是READY了

大概效果就是这样的了

var state = 1;
    sdk ={
    };
    function test(name){
        if(state==2){
            alert(name);
        }else{
            alert("haha");
        }
    }
    sdk["test"] = test;
    state =2;
    sdk.test("123");
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号