在关于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();
Run Code Online (Sandbox Code Playgroud)
shell.js是与其他站点共享的公共文件,可能没有定义变量.如何检查变量是否已定义,如果不将其赋值为false,然后执行上面的代码?
尝试
if (typeof disabledFlag === 'undefined')
disabledFlag = false;
Run Code Online (Sandbox Code Playgroud)
有比使用三元组或if else语句更简单的方法来做到这一点。
就您的特定功能而言,您可以执行以下操作:
var toggleBlock = function() {
var disabledFlag = disabledFlag||false;
if(!disabledFlag){
//etc.
Run Code Online (Sandbox Code Playgroud)
undefined是假的,所以它与逻辑||运算符一起使用。该||运算符将 newvar disabledFlag设置为disabledFlag(如果存在),如果不存在,它将设置var为false
这个相同的概念被用在许多不同的上下文中。例如:
情况1 -
var obj = {hello: 'world'};
function fn(object) {
var object = object || {foo: 'bar'};
return object;
}
fn(obj) // ==> {hello: 'world'}
Run Code Online (Sandbox Code Playgroud)
情况2-
function fn(object) {
var object = object || {foo: 'bar'};
return object;
}
fn(objectThatDoesntExist); // ==> {foo: 'bar'}
Run Code Online (Sandbox Code Playgroud)
在 JavaScript 库和模块模式项目中,这个概念以多种不同的方式频繁使用。