如何从Javascript中的另一个函数调用函数内的子函数?

时间:2017-07-25 15:23:34

标签: javascript function

import tkinter as tk
from tkinter import messagebox

var = 10
out = 0

def calculate():
    global out

    try:
        if eval(IfEntry.get()):
            exec(thenEntry.get(), globals())
        else:
            exec(elseEntry.get(), globals())
        messagebox.showinfo(title="Calculation", message="out: " + str(out))
    except:
        exc_type, exc_value, exc_traceback = sys.exc_info()
        msg = traceback.format_exception(exc_type, exc_value, exc_traceback)
        messagebox.showinfo("Bad Entry", message=msg)            

root = tk.Tk()

Iflabel = tk.Label(root, text = "If...")
Iflabel.pack()
IfEntry = tk.Entry(root)
IfEntry.insert(0, "var >= 10")
IfEntry.pack()

thenlabel = tk.Label(root, text = "Then...")
thenEntry = tk.Entry(root)
thenlabel.pack()
thenEntry.insert(0, "out = 4")
thenEntry.pack()

elselabel = tk.Label(root, text = "else..")
elseEntry = tk.Entry(root)
elselabel.pack()
elseEntry.insert(0, "out = 2")
elseEntry.pack()

applybutton = tk.Button(root, command=calculate, text = "Calculate")
applybutton.pack()


applybutton.focus_displayof

root.mainloop()

这里我需要从MyFunction()调用函数HelloAgain()。 你能否为这种情况建议任何可能的解决方案。

2 个答案:

答案 0 :(得分:1)

你做不到。 getErrorStream() il的范围仅限于HelloAgain函数。 这是在javascript中创建私有范围的唯一方法。

答案 1 :(得分:0)

你不能,HelloAgain函数在一个闭包中并且作用于该闭包。

您可以返回HelloAgain函数,然后从可以调用Hello的任何地方调用它。

function Hello () {
  function HelloAgain () {}
  return HelloAgain;
}

function MyFunction () {
  Hello().HelloAgain();
}

但这有点奇怪。

您可以使用this关键字处理此事。

function Hello () {
  this.helloAgain = function helloAgain () {}
}

var hello = new Hello();

function MyFunction () {
  hello.helloAgain();
}