如果变量不为空,请打印它:空,我很困惑
if variable ain't null print it: null i'm confused
if (authorID) {
console.log(authorID);
$.ajax({
-ajax stuff-
)}
} else window.location.href="notLoggedIn.html";
好的,这是我的问题:在控制台authorID
(字符串(中确实被打印出来,并且打印为null
。我的问题是:为什么会这样?由于 authorID 为空,因此不应该是执行的 else 块吗?
我真的是Javascript/jQuery的新手,所以我想我可能只是错过了一些明显的东西,但自己无法弄清楚。
编辑:以下是创建作者ID的方式:
if (session.getAttribute("authorID")!= null) {
authorID = session.getAttribute("authorID").toString();
}
由于我在没有登录的情况下进行测试,我希望 session.getAttribute(( 返回 null
JavaScript 是一种非常灵活的语言。很容易被"真实"的价值观所迷惑。
空和假属于那些真实的常见错误。
在方法执行之前的某个地方,空值已转换为字符串。也许如果你从 DOM 获得值。
这就是为什么在调试时,您会看到"null"被写入输出。但实际上,您将"null"作为字符串,而不是null的原始值。
对于 JavaScript,计算结果为 true:
if("null"){
}
消除这种情况的唯一方法是使用 typeof 检查数据类型并检查正确的值。
if(a !== null && a !== "null"){
}
好的,问题是字符串的计算结果始终为 true。 你说authorID
是一根绳子;因此if (authorID)
将始终评估为真。
你可以做的是测试你的"authorID"字符串是否不等于"null":
if (authorID !== 'null')
我想您希望仅在"authorId"等于字符串"null"时才发生页面重定向,因此您的代码如下所示:
if (authorID !== 'null') {
console.log(authorID);
$.ajax({
// -ajax stuff-
)}
} else {
window.location.href = "notLoggedIn.html";
}
或者,现在您已经编辑了问题以显示如何定义"authorID":
将该块更改为:
if (session.getAttribute("authorID")) {
authorID = session.getAttribute("authorID").toString();
} else {
authorID = null;
}
然后,您可以使用原始条件:
if (authorID) {
console.log(authorID);
$.ajax({
// -ajax stuff-
)}
} else {
window.location.href = "notLoggedIn.html";
}
我建议阅读:http://saladwithsteve.com/2008/02/javascript-undefined-vs-null.html
在您的情况下,该文章的结尾显示了您犯的错误:
if (foo == null) {
foo = "Joe";
}
等于:
if (!foo) {
foo = "Joe";
}
我做了一个快速的jsfidd,我希望能更好地为您拼写:http://jsfiddle.net/vp9Fa/1/
传递if条件authorID应该初始化为布尔变量。
var authorID=true;
if (authorID)
{
//code if true
}
else
{
//code if false
}
在你的代码中,你可以像下面这样做
if (authorID!=null)
{
//code if not null
}
else
{
//code if null
}
- Javascript变量到PHP变量-如果语句不起作用,则发布
- 如果i变量'It’’’’It’’没有在里面使用
- PHP:运行后变量不工作“;如果“;命令
- 如果为null,则设置javascript变量的值
- 如果变量不是't已传递给函数.这是正确的方式吗
- 如果JS会话变量为null,如何避免500内部服务器错误
- 如果项目不匹配,则显示变量
- 如果无法解析变量,则使 Jade (Pug) 失败
- PHP 如果特定日期到期,则不回显变量
- 如果循环中至少有一个元素返回 false,如何将变量设置为 false
- Javascript:如果有三个变量
- 如果字符串保存在变量中,如何查找包含字符串的ID
- 如果变量在使用它的块内被修改,则可以ng
- 如果通过字符串变量发送,HTML内部的子窗口将显示为文本
- 如果全局上下文中的变量是属性,那么为了闭包的目的,如何区分它们
- 如果我不这样做会发生什么;t在javascript中的变量中分配新的Image
- 如果传递了DateTime变量,请使用Javascript更改Div类
- 如果有javascript代码,请验证php变量
- 原型取决于全局变量(如果该变量发生变化怎么办)
- 我可以't在javascript中添加两个变量.如果我更改要添加的变量的顺序,它要么忽略第二个变量,要么连接