qq_19865749
Liekkas_BX
采纳率92%
2017-09-23 09:15

页面引入的js 文件中定义了一个全局变量,但再页面的script 中使用时提示undefined

已采纳
<script type="text/javascript">
    console.log("进入quit页面");
    //$(document).ready(function(){
        localStorage.removeItem('edmin_temp');
        var outTime = localStorage.getItem('edmin_outTime');
        if(!outTime || outTime==1){ localStorage.setItem('edmin_outTime',1); outTime=1;} 
        var mainUrl  = window.location.hostname;
        alert("根为:"+root);

        最后一句,提示Uncaught ReferenceError: root is not defined 错误
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

9条回答

  • sinat_35429110 菜瓜3306 4年前
    全局变量在哪定义的,一种是在function外用var定义的;
        使用var()关键字)+变量名(标识符)的方式在function外部声明,
        还有一种是不用var隐式声明的,
        还有一种是window全局对象声明的
    不过,一般最好别用全局变量,查错不方便,代码可读性也很低
    
    点赞 评论 复制链接分享
  • sreddouilyongxia 面向对象的夜猫子 4年前

    你的root是在哪里定义的?

    点赞 1 评论 复制链接分享
  • qq_19865749 Liekkas_BX 4年前

    这个问题硬是怪的很,现在试又偏偏可以,真不知是什么鬼。谢谢各位!

    点赞 评论 复制链接分享
  • qq_32225989 748038347 4年前

    把1.js导入进来就可以了

    点赞 评论 复制链接分享
  • qq_32225989 748038347 4年前

    测试页面的内容:

            <body>
                <script>
                    var c=a();
                    alert(c());
                </script>
            </body>
    
    点赞 评论 复制链接分享
  • qq_32225989 748038347 4年前

    1.js中内容如下:function a(){
    var root= "222";
    function b(){
    return parseInt(root);
    }
    return b;
    };
    测试页面内容如下:
    <!DOCTYPE html>



    测试页面



    <br> var c=a();<br> alert(c());<br>


    不懂得话可以查查闭包的知识。希望能帮到你
    点赞 评论 复制链接分享
  • qq_19865749 Liekkas_BX 4年前
     <script type="text/javascript" src="resource/js/config.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                localStorage.removeItem('edmin_temp');
                var outTime = localStorage.getItem('edmin_outTime');
                if(!outTime || outTime==1){ localStorage.setItem('edmin_outTime',1); outTime=1;} 
                if(root == undefined){
                    alert("quit.jsp中root为undefined,说明config.js还未加载完成便执行了$.ready");
                }
                ...
                </script>
    

    root 在config.js 中定义的:

     var root        = window.location.hostname;        
    
    点赞 评论 复制链接分享
  • justinytsoft justinytsoft 4年前

    你是不是把引入的JS文件放到了 代码块的后面了啊</p>

    点赞 评论 复制链接分享
  • q213546879 /*----无忧----*/ 4年前

    恩,你这里代码比较少,不太好判断你的问题出在哪里,建议你把你代码声明那一块也贴出来,再然后就是建议你尽量少写全局变量,尽量存在一个对象身上

    点赞 评论 复制链接分享