Javascript 停止变量/变量范围

Javascript 停止变量/变量范围,javascript,variables,global-variables,Javascript,Variables,Global Variables,我有一些代码我想在一个页面上复制,(完整的代码如下)它多次使用相同的变量名,加载一次,效果很好,加载多次会中断,因为变量相互干扰 是否有一个简单的修复方法,无需手动检查并更改每个重复代码的每个变量的名称 <body style="margin:0;padding:0"> <script> //vertical script //possible values: layout1,layout2,layout3,layout4 (1mweb, 2table

我有一些代码我想在一个页面上复制,(完整的代码如下)它多次使用相同的变量名,加载一次,效果很好,加载多次会中断,因为变量相互干扰

是否有一个简单的修复方法,无需手动检查并更改每个重复代码的每个变量的名称

<body style="margin:0;padding:0">

<script>
    //vertical script

    //possible values: layout1,layout2,layout3,layout4 (1mweb, 2tablet, 3,4 desktop)
    var area = "%%AREA%%"
    var subArea = "%%SUBAREA%%"
    var adUnitMacro = area + subArea
    var verticalOutput = ""

    keywordArray = ["news", "homepage", "technology", "entertainment", "sport", "business", "lifestyle", "travel", "motoring", "property"]

    for (i = 0; i < keywordArray.length; i++) {
        if (adUnitMacro.includes(keywordArray[i])) {
            verticalOutput += keywordArray[i] + ",";
        }
    }
    if (verticalOutput.length > 1) {
        verticalOutput = verticalOutput.slice(0, -1);
    }

    if (verticalOutput.length <= 0) {
        verticalOutput = "news";
    }

    if (area.length <= 0) {
        verticalOutput = "homepage,news";
    }

</script>

<script>
    // Define the sizes here:

    var adUnitSizes = ["%%X_LAYOUT_1%%"];
    var rSizeOutput = [];

    if (adUnitSizes === [[300,250],[300,600]]){
        rSizeOutput = [15,10];
    }else if  (adUnitSizes === [728,90]){
        rSizeOutput = [2];
    }else if (adUnitSizes === [300,250]){
        rSizeOutput = [15];
    }


    // Add your post-bid tag IDs here:
    var adUnitBids = [{
        bidder: "appnexus",
        sizes: adUnitSizes,
        params: {
            placementId: "12895671",
            vertical: verticalOutput,
            kw_vertical: verticalOutput,
            kw_postbid: "true",
            postbid: "true"
        }
    }, {
        bidder: "rubicon",
        params: {
            accountId: "14232",
            siteId: "177830",
            zoneId: "864590",
            sizes: rSizeOutput,
            keywords: [verticalOutput],
            inventory: { "vertical": [verticalOutput] }
        }
    }]

    // Define the passback HTML tag here. Note that this tag is usually in either Script tag form or iFrame form. For example:

    /* iFrame:
        var passbackTagHtml = "<iframe src="http://ad.doubleclick.net/...;sz=300x250;ord=[timestamp]?" width="300" height="250" marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0" scrolling="no"></iframe>"
    */

    /* Script:
        var passbackTagHtml = "<scr" + "ipt type="text/javascript" src="https://www.googletagservices.com/tag/js/gpt.js">googletag.pubads().definePassback("/19968/header-bid-passback-tag", [300, 250]).display();</scr" + "ipt>"
    */

    var passbackTagHtml = "<script type=\"text\/javascript\" src=\"https:\/\/ads.odt.co.nz\/apl\/jserver\/SASPB\/FCID=%%FCID%%\"><\/scr" + "ipt>";



    // ======= DO NOT EDIT BELOW THIS LINE =========== //

    var pbjs = pbjs || {};
    pbjs.que = pbjs.que || [];

    (function () {
        var pbjsEl = document.createElement("script");
        pbjsEl.type = "text/javascript";
        pbjsEl.async = true;
        var isHttps = "https:" === document.location.protocol;
        pbjsEl.src = "//acdn.adnxs.com/prebid/not-for-prod/prebid.js";
        var pbjsTargetEl = document.getElementsByTagName("head")[0];
        pbjsTargetEl.insertBefore(pbjsEl, pbjsTargetEl.firstChild);
    })();

    var doNotChange = "doNotChange";

    pbjs.que.push(function () {

        var adUnits = [{
            code: doNotChange,
            sizes: adUnitSizes,
            bids: adUnitBids
        }];

        pbjs.addAdUnits(adUnits);

        pbjs.requestBids({
            timeout: 1500,
            bidsBackHandler: function () {
                var iframe = document.getElementById("postbid_if");

                var iframeDoc = iframe.contentWindow.document;

                var params = pbjs.getAdserverTargetingForAdUnitCode(doNotChange);

                // If any bidders return any creatives
                if (params && params["hb_adid"]) {
                    pbjs.renderAd(iframeDoc, params["hb_adid"]);
                    var frame = window.frameElement;
                    frame.width = document.getElementById("postbid_if").width;
                    frame.height = document.getElementById("postbid_if").height;
                } else {
                    // If no bidder return any creatives,
                    // Passback 3rd party tag in Javascript

                    iframe.width = adUnitSizes[0][0];
                    if (layoutPos === "layout1" || layoutPos === "layout2") {
                        iframe.height = adUnitSizes[0][1];
                    } else if (layoutPos === "layout3" || layoutPos === "layout4") {
                        iframe.height = adUnitSizes[1][1];
                    }
                    iframeDoc.write(passbackTagHtml);
                    iframeDoc.close();


                    iframeDoc.write(passbackTagHtml);
                    iframeDoc.close();
                }
            }
        });
    });

</script>

<iframe id="postbid_if" FRAMEBORDER="0" SCROLLING="no" MARGINHEIGHT="0" MARGINWIDTH="0" TOPMARGIN="0" LEFTMARGIN="0" ALLOWTRANSPARENCY="true"
    WIDTH="0" HEIGHT="0"></iframe>

//铅字
//可能值:布局1、布局2、布局3、布局4(1mweb、2表格、3,4桌面)
var area=“%%area%%”
var subrea=“%%subrea%%”
var adUnitMacro=面积+分区
var verticalOutput=“”
关键词数组=[“新闻”、“主页”、“技术”、“娱乐”、“体育”、“商务”、“生活方式”、“旅游”、“汽车”、“财产”]
对于(i=0;i1){
verticalOutput=verticalOutput.slice(0,-1);
}

如果(verticalOutput.length)查看什么是函数,并使用
成为作用域相关的模块、类,实际上是最简单的方法,将每个脚本块包装在一个立即调用的函数表达式中,以便它们有自己的作用域。共享数据可以放在此作用域之外,也可以用作调用的参数。