Javascript 如何确定变量是否未定义
在另一个问题中,我正在决定如何关闭函数,有效的解决方案是: I placeJavascript 如何确定变量是否未定义,javascript,jquery,Javascript,Jquery,在另一个问题中,我正在决定如何关闭函数,有效的解决方案是: I placevar disabledFlag=true在我的页面的标题部分,在调用shell.js之前,在shell.js中我有: /*******************************/ /* TOGGLE BUTTON /*******************************/ var toggleBlock = function() { console.log(disabledFlag); i
var disabledFlag=true
在我的页面的标题部分,在调用shell.js之前,在shell.js中我有:
/*******************************/
/* TOGGLE BUTTON
/*******************************/
var toggleBlock = function() {
console.log(disabledFlag);
if(!disabledFlag){
var windowsize = $(window).width(),
isDesktop = windowsize > 765;
$("#quicksearch").toggleClass("collapse in", isDesktop);
$("#quicksearch").toggleClass("collapse out", !isDesktop);
$("#sidebar").toggleClass("collapse in", isDesktop);
$("#sidebar").toggleClass("collapse out", !isDesktop);
}
else {
$("#quicksearch").addClass("collapse out");
$("#sidebar").addClass("collapse out");
}
}
$(document).ready(toggleBlock);
$(window).on("resize.showContent", toggleBlock);
toggleBlock();
shell.js是一个与其他站点共享的公共文件,可能没有定义变量。如何检查变量是否已定义,如果未定义,如何将其赋值为false,然后执行上面的代码?试试看
if (typeof disabledFlag === 'undefined')
disabledFlag = false;
您可以使用
typeof
关键字检查变量是否未定义,如下所示:
if(typeof neverDeclared == "undefined") //no errors
if(neverDeclared == null) //throws ReferenceError: neverDeclared is not defined
var toggleBlock = function() {
var disabledFlag = disabledFlag||false;
if(!disabledFlag){
//etc.
查看有关
typeof
的更多信息,您不需要typeof
if (window.disabledFlag === undefined) window.disabledFlag = false;
有比使用ternaries或
if-else
语句更简单的方法
就您的特定功能而言,您可以执行以下操作:
if(typeof neverDeclared == "undefined") //no errors
if(neverDeclared == null) //throws ReferenceError: neverDeclared is not defined
var toggleBlock = function() {
var disabledFlag = disabledFlag||false;
if(!disabledFlag){
//etc.
undefined
是falsy,因此它与逻辑的|
运算符一起工作。该|
运算符使新的var disabledFlag
设置为disabledFlag
(如果存在),如果不存在,它将var
设置为false
同样的概念在许多不同的环境中使用。例如:
情景1-
var obj = {hello: 'world'};
function fn(object) {
var object = object || {foo: 'bar'};
return object;
}
fn(obj) // ==> {hello: 'world'}
function fn(object) {
var object = object || {foo: 'bar'};
return object;
}
fn(objectThatDoesntExist); // ==> {foo: 'bar'}
情景2-
var obj = {hello: 'world'};
function fn(object) {
var object = object || {foo: 'bar'};
return object;
}
fn(obj) // ==> {hello: 'world'}
function fn(object) {
var object = object || {foo: 'bar'};
return object;
}
fn(objectThatDoesntExist); // ==> {foo: 'bar'}
在JavaScript库和模块模式项目中,这个概念经常以许多不同的方式使用。添加if(disabledFlag==undefined){var disabledFlag=false;};仍然不工作,不要使用
var
。这使得变量位于其所在范围的局部,即if块。你想把它挂在窗户上。嗯,还是不起作用,你说的话很有道理,所以我不知道为什么它不起作用。现在它神奇地起作用了。我假设服务器级缓存已过期。我们在每个实例中自动生成htmlc文件,一旦它被导出,它就开始工作了。