InDesign脚本问题。我知道需要用var写什么。我只是想了解发生了什么...有我的脚本:
function myalert(s){
var w = new Window('palette')
ws = w.add('statictext',undefined,s)
w.show()
$.sleep(1000)
w.close()
}
myalert('hello')
alert(ws)
警告:1. [对象静态文本]2. JavaScript错误!对象无效...
问题:为什么会这样?为什么警报后出错?我们已经从内存中删除了吗?那为什么我看到警报?还没删除?那为什么我看到错误?
myalert()
,您会看到“你好”警报。myalert()
完成,并且ws
与w
(在myalert()
本地)一起被删除。ws
-删除它后-并得到错误。var w = 100 // global
function myalert(s){
var w = new Window('palette') // local (shadows 100)
ws = w.add('statictext',undefined,s) // global
w.show()
$.sleep(1000)
w.close()
alert('In myalert() w = ' + w)
alert('In myalert() ws = ' + ws)
}
myalert('hello')
alert('Global, w = ' + w)
alert('Global, ws = ' + ws)
如果不使用var
,则w
和ws
都将保留在全局范围内:
function myalert(s){ w = new Window('palette') ws = w.add('statictext',undefined,s) w.show() $.sleep(1000) w.close() alert('[myalert] w = ' + w) alert('[myalert] ws = ' + ws) } myalert('hello') alert('[global] w = ' + w) alert('[global] ws = ' + ws)
PS。您也可以使用$.writeln('ws = ' + ws)
在控制台上转储对象