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. [Object StaticText]
2. JavaScript错误!对象无效...
问题:为什么会这样?为什么警报后出错?我们已经从内存中删除了吗?那为什么我看到警报?还没删除?那为什么我看到错误?
答案 0 :(得分:0)
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)