两种情况下,变量的类型都将是"未定义的".但未声明的变量会引发异常.
有一个简单的方法来处理这个?
在关于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语句,如果没有定义该值,那么让它通过.
我试过了
if (something != "undefined")
Run Code Online (Sandbox Code Playgroud)
和
if (something !== "undefined")
Run Code Online (Sandbox Code Playgroud)
然而,if无论如何,似乎都会进入声明.如果它未定义则会通过.如果定义了它就会通过.难道我做错了什么?
我有一个名为index.js的JavaScript文件.此javascript文件提供与index.html关联的过程代码.我的index.html文件非常基础.它看起来如下:
<!DOCTYPE html>
<html>
<body>
<script type="text/javascript" src="index.js"></script>
<script type="text/javascript">
@if (ViewBag.IsGood()) {
<text>
INFORMATION = { version: '<%= version%>', timestamp: '<%= timestamp%>' };
</text>
}
runInit();
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在我的index.html.js文件中,我有以下内容
function runInit() {
if (INFORMATION === undefined) {
INFORMATION = { version: 'Unknown' };
}
// Keep going
}
Run Code Online (Sandbox Code Playgroud)
如您所见,有时会设置信息.有时,它没有.设置信息时一切正常.如果未设置,则会收到错误消息"ReferenceError:找不到变量:INFORMATION".我对此感到困惑,因为我认为我正在检查该属性是否存在正确.显然,我不是.
在JavaScript中,如何确保变量存在?这是我最关心的问题.我不想重新安排我的代码.我真的想这样做.我觉得我做得对.但是,我仍然收到错误.
谢谢.
标题是我的问题;
这是什么意思:
if( variable ){ /* do something */ }
Run Code Online (Sandbox Code Playgroud)
我的意思是,如果变量存在做某事或什么?
我的代码如下.
elem.onkeypress=function(e){
if( (e.which===undefined?e.keyCode:e.which)==13 ){
//dosomething
}
}
Run Code Online (Sandbox Code Playgroud)
在IE8,它发现了错误: 'which' is null or not an object
如何解决这个问题.
我是JavaScript的新手,并且遇到了一个看似明显的问题.
const item = sessionStorage.getItem('item'); // undefined
if (item) {
return item;
}
Run Code Online (Sandbox Code Playgroud)
在Chrome调试器中,我可以看到该项目是未定义的.我希望条件失败.令我惊讶的是,它正在评估为真.
我以为我已经测试了这个.为什么它会在有条件的情况下回归?
我遇到过其他检查,例如如何在JavaScript中检查"未定义"所推荐的检查?.但是......为什么我要为这样一个简单的检查做一些甚至远程"复杂"的事情呢?上面的方法看起来如此简单和优雅,我不愿意失去它.
我也在https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage上的示例中看到了这种方法.
我在调用之前看到了很多种用于检查回调函数的方法.
1)
function(callBack)
{
...
if(callBack != null)
callBack();
}
Run Code Online (Sandbox Code Playgroud)
2)
function(callBack)
{
...
if(typeof callBack == 'function')
callBack();
}
Run Code Online (Sandbox Code Playgroud)
3)
function(callBack)
{
...
if(callBack !== null)
callBack();
}
Run Code Online (Sandbox Code Playgroud)
4)
function(callBack)
{
...
if(callBack != undefined)
callBack();
}
Run Code Online (Sandbox Code Playgroud)
5)
function(callBack)
{
...
try{
callBack();
} catch(err) {}
}
Run Code Online (Sandbox Code Playgroud)
6)
function(callBack)
{
...
if (callBack && typeof(callBack) == "function")
callBack();
}
Run Code Online (Sandbox Code Playgroud)
7)
function(callBack)
{
...
if(callBack)
callBack();
}
Run Code Online (Sandbox Code Playgroud)
8)
function(callBack)
{
...
if(typeof window[callBack] === 'undefined')
callBack();
}
Run Code Online (Sandbox Code Playgroud)
9)
function(callBack)
{ …Run Code Online (Sandbox Code Playgroud) 我正在使用三元表达式来检查变量是否存在以相应地显示值,但是因为,我需要检查它是否存在并且其中有一些值,它在未定义变量时检查条件时失败.我该如何解决这个问题?
这是代码:
$('#select').selectize({
items: typeof icoop != "undefined" && icoop != null || icoop.selectedUsers.length < 1 ? icoop.selectedUsers : []
});
Run Code Online (Sandbox Code Playgroud)
我明白了:
未捕获的ReferenceError:未定义icoop