js全局变量在其他方法中赋值后无法影响到该方法外的全局变量的值(奇葩问题)

js全局变量在其他方法中赋值后无法影响到该方法外的全局变量的值(奇葩问题)做个笔记,以防忘记遇到一个奇葩问题(书写规范不会遇到此问题)问题描述:$(document).ready(function(){varstrCookie=document.cookie;username=”1″;if(strCookie){cookieVariables=strCookie.split(“;”);

大家好,又见面了,我是你们的朋友全栈君。

做个笔记,以防忘记
遇到一个奇葩问题(书写规范不会遇到此问题

问题描述:

$(document).ready(function(){ 
     
    var strCookie=document.cookie;
    username="1";
    if (strCookie) {
        cookieVariables = strCookie.split(";");
        for (i = 0; i < cookieVariables.length; i++) {
        cookieName = cookieVariables[i].split("=");
        if (cookieName[0] === "username"){
            username=cookieName[1];
            alert(cookieName[1]);
        }   
    }
}
alert(username);
});

这样两次输出的username值不同第一个弹出的是Superman,第二个弹出“1”
解决办法:
将要赋的值通过一个function()方法的返回值获得

$(document).ready(function(){ 
     
    var strCookie=document.cookie;
    username=getname(username);
    function getname(username){ 
   
        if (strCookie) {
            cookieVariables = strCookie.split(";");
            for (i = 0; i < cookieVariables.length; i++) {
                cookieName = cookieVariables[i].split("=");
                if (cookieName[0] === username){
                   return cookieName[1];
                   alert("cookieName[1]");
                }       
            }
        }else{
            return "1";
        }
    }
alert(username);
});
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/137484.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • linux clion 激活码【在线注册码/序列号/破解码】

    linux clion 激活码【在线注册码/序列号/破解码】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • batchsize和数据量设置比例_(3条消息) batch size设置技巧 谈谈batchsize参数「建议收藏」

    深度学习中经常看到epoch、iteration和batchsize,下面按自己的理解说说这三个的区别:(1)batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;(2)iteration:1个iteration等于使用batchsize个样本训练一次;(3)epoch:1个epoch等于使用训练集中的全部样本训练一次;举个例子,训练集…

  • yui3:widget

    yui3:widgetWidget类包含什么?widget类的结构和职能widget类基本的属性渲染方法渐进增强标签结构class名和CSS默认UI事件类的结构和职责  Widget类的结构和职责 Widget类是一个用于创建widgets的基础类。Widget类可以实例化,但是一般都是用它作为基础类,扩展创建widgets,这些通过扩展创…

  • Operators in MXNet-BatchNorm

    Operators in MXNet-BatchNormOperatorsinMXNet-BatchNorm

  • 证书签名

    证书签名一、数字签名(digitalsignature)对指定信息使用哈希算法,得到一个固定长度的信息摘要,然后再使用私钥(注意必须是私钥)对该摘要加密,就得到了数字签名。所谓的代码签名就是这个意思。二、数字证书(digitalcertificate)证书生成开发者在申请iOS开发证书时,需要通过keychain生成一个CSR文件(CertificateSigningReque

  • IDEA继承父类后重写方法快捷键

    IDEA继承父类后重写方法快捷键eg:我们的MyServlet继承了HttpServlet,我们想要重写里面的doGet()方法和doPost()方法,如何做到呢?publicclassMyServletextendsHttpServlet{}1)ctrl+o,注意光标在继承的父类名后2)弹出下图后3)我们想要选定连续的方法怎么做?按住shift键,默认开始为当前位置,结束位置为你下次的鼠标单击位置4)我们只是想选择不连续的两个方法,比如说上文的doGet()和doPost(),如何做.

    2022年10月31日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号