在函数调用中引用未定义变量且作用域不明确是javascript错误。因此,如果变量js_shutdown
在作用域中不存在,则会出现以下情况:
Ext.Msg.show({title: phrase(js_shutdown,'Shutdown'), //...
出现了错误。
例如,以下代码在调用phrase()
函数的那一行会出现错误:
var Ext = {};
Ext.Msg = {};
Ext.Msg.show = function() {console.log("success")};
function phrase(variable, defaultPhrase) {
return(variable || defaultPhrase);
}
Ext.Msg.show({title: phrase(js_shutdown,'Shutdown')});
因为 JavaScript 引擎无法在任何作用域中找到 js_shutdown 函数。
但是,这是可以的:
var Ext = {};
Ext.Msg = {};
Ext.Msg.show = function() {console.log("success")};
function phrase(variable, defaultPhrase) {
return(variable || defaultPhrase);
}
Ext.Msg.show({title: phrase(window.js_shutdown,'Shutdown')});
你可以在这里查看它的工作原理:
http://jsfiddle.net/jfriend00/JFz6R/
因为你已经告诉JS引擎在哪里寻找js_shutdown,当它不存在时,它只会将未定义传递给phrase函数(正如你所希望的)。