在关于SO的另一个问题中,我正在确定如何切换一个函数,工作解决方案就是这样:
我将var disabledFlag = true;
放在我页面的head部分中,在调用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,然后执行上面的代码?
答案 0 :(得分:6)
试
if (typeof disabledFlag === 'undefined')
disabledFlag = false;
答案 1 :(得分:3)
除了使用三元组或if else
语句之外,还有更简单的方法。
就你的具体功能而言,你可以这样做:
var toggleBlock = function() {
var disabledFlag = disabledFlag||false;
if(!disabledFlag){
//etc.
undefined
是假的,因此它适用于逻辑||
运算符。该||
运算符会将新var disabledFlag
设置为disabledFlag
(如果存在),如果不存在,则会将var
设置为false
在许多不同的背景下使用同样的概念。例如:
情况1 -
var obj = {hello: 'world'};
function fn(object) {
var object = object || {foo: 'bar'};
return object;
}
fn(obj) // ==> {hello: 'world'}
情况2 -
function fn(object) {
var object = object || {foo: 'bar'};
return object;
}
fn(objectThatDoesntExist); // ==> {foo: 'bar'}
在JavaScript库和模块模式项目中,这个概念经常以许多不同的方式使用。
答案 2 :(得分:1)
您不需要typeof
if (window.disabledFlag === undefined) window.disabledFlag = false;
答案 3 :(得分:0)
您可以使用typeof
关键字检查变量是否未定义,如下所示:
if(typeof neverDeclared == "undefined") //no errors
if(neverDeclared == null) //throws ReferenceError: neverDeclared is not defined
查看here了解有关typeof