JavaScript文件顶部的全局变量

时间:2017-12-04 08:10:25

标签: javascript variables

假设我在JavaScript文件的顶部声明一个等于0的全局JavaScript变量

即。

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.phonon import Phonon

class Widget(QWidget):
    def __init__(self, *args, **kwargs):
        QWidget.__init__(self, *args, **kwargs)
        lay = QVBoxLayout(self)
        vp = Phonon.VideoPlayer()
        media = Phonon.MediaSource('/path/of/video')
        vp.load(media)
        vp.play()
        scene = QGraphicsScene()
        self.view = QGraphicsView(scene, self)
        lay.addWidget(self.view)
        proxy = scene.addWidget(vp)
        # or 
        # proxy = QGraphicsProxyWidget()
        # scene.addItem(proxy)
        self.item = scene.addEllipse(QRectF(0, 0, 20, 20), QPen(Qt.red), QBrush(Qt.green))
        self.item.setParentItem(proxy)

    def mousePressEvent(self, event):
        p = self.view.mapToScene(event.pos())
        # move item
        self.item.setPos(p-QPoint(20, 20))
        QWidget.mousePressEvent(self, event)

    def resizeEvent(self, event):
        if event.oldSize().isValid():
            print(self.view.scene().sceneRect())
            self.view.fitInView(self.view.scene().sceneRect(), Qt.KeepAspectRatio)
        QWidget.resizeEvent(self, event)

if __name__ == '__main__':

    app = QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

然后我调用JavaScript中的函数将该变量设置为1 即。

var jVar=0; 

如果我重新加载页面,那么在调用function setVarToOne(){ jVar=1; } 函数之前变量会等于什么?

setVarToOne是否会保留函数中设置的值,还是会重新初始化为0?

我需要了解的是,重新加载页面时JavaScript变量会发生什么?

谢谢

6 个答案:

答案 0 :(得分:2)

当您重新加载页面时,JavaScript中的所有内容都将丢失,代码将像您第一次加载页面时一样执行。

这意味着,您的变量将初始化为0,并且在调用该函数时,该变量将设置为1.

答案 1 :(得分:2)

当您重新加载页面时,jVar将设置为0;因为你是在第一级初始化它var jVar=0; 由于在重新加载期间未调用您的函数。 如果您拨打setVarToOne(),那么只有那时您的全局变量值才会发生变化。

您还可以选择在localStorage中设置值

localStorage.setItem(id, value);

答案 2 :(得分:1)

var jVar=0;
document.write(jVar+'<br>');

function setVarToOne(){
    jVar=1;
}

setVarToOne();
document.write(jVar);

结果: 1°document.write:0 2°document.write:1

每次加载/重新加载页面时,变量'jVar'将设置为0然后设置为1

jsfiddle

答案 3 :(得分:0)

您的变量将设置为0.

当您重新加载页面时,整个脚本从头开始再次运行 - 从而首先运行var jVar=0

如果您需要保存数据,可以使用本地存储,会话存储,Cookie或将其保留在服务器上。

看一下this question,讨论在页面加载之间保持变量的问题。

答案 4 :(得分:0)

它将是0。

默认情况下,Javascript无法在两个页面加载之间保持状态。您可以先尝试保存,然后从某个商店读取数据。通过API调用或将其保存到localStorage,cookie或其他一些数据存储。

答案 5 :(得分:0)

全局变量是将在整个Session中存储的变量。 当你想存储会话之外的东西时使用PHP。 您需要PHP来存储全局变量。 复制您的代码并将其放在php文件中。 在这个文件中写下这个,

PCollection<T> step = ...;
PCollection<T> afterStep = step.apply(ParDo.of( new DoFn<...>(){...}));
afterStep.apply(ParDo.of(new DoFn<...>(){...}));

变量将存储在会话中,您只需将该值传递给js by

<?php
session_start();
$_SESSION['JVar'] = 0;
function setVarToOne(){
    $_SESSION['jVar'] = 1;
}