这个JavaScript三元运算符中发生了什么
What is happening in this JavaScript ternary operator?
此函数创建&存储一个cookie,在这里它将访问者的名称存储在cookie变量中。根据来源
函数的参数包含cookie的名称cookie的值以及cookie过期的天数。
在函数中,我们首先将天数转换为日期,然后我们添加cookie到期的天数。之后,我们存储cookie名称、cookie值和过期时间document.cookie对象中的日期。
function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) +
((exdays==null) ? "" : ";expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}
我可以看到日期是如何工作的,但这部分发生了什么:
var c_value=escape(value) + ((exdays==null) ? "" : ";
以下是调用代码:
function checkCookie()
{
var username=getCookie("username");
if (username!=null && username!="")
{
alert("Welcome again " + username);
}
else
{
username=prompt("Please enter your name:","");
if (username!=null && username!="")
{
setCookie("username",username,365);
}
}
}
我很感激任何提示或建议。
换行,这是整行:
var c_value=escape(value) + ((exdays==null) ? "" : ";expires="+exdate.toUTCString());
这意味着,如果未指定exdays
参数(exdays==null
),则添加空白(""
),否则使用toUTCString()将";expires="
加上日期(exdate
)添加为字符串
要了解有关cookie的更多信息,请使用Mozilla MDN而不是w3schools。这种if
语句是条件运算符
应该是这样的吗?
var c_value=escape(value) + (exdays==null) ? "True Part" : "False Part";
三进制的假部分在最后有一个换行符。我想应该是这样的:
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
而不是:
var c_value=escape(value) + ((exdays==null) ? "" : ";
expires="+exdate.toUTCString());
发布的代码中似乎有一个错误的换行符。
var c_value=escape(value) + ((exdays==null) ? "" : ";
expires="+exdate.toUTCString()); // this line should be up after the semicolon
这将产生:
var c_value=escape(value) + ((exdays==null) ? "" : ";expires="+exdate.toUTCString());
这基本上意味着,如果给函数的exdays
为null(双等于,因此它被强制,这意味着未定义的空字符串或整数0也将失败),则过期字符串将不会被连接。如果给定了过期日期,它会将";expires="+exdate.toUTCString()
附加到cookie字符串中。
相关文章:
- 为什么属性存在于对象实例上,即使其原型发生了更改
- Javascript函数 - 通过引用复制,但这里发生了什么
- 套接字发生了什么's在'断开连接'事件(服务器端)
- 这段代码中发生了什么
- Wamp没有识别出我的代码发生了更改
- 如何检查输入框值在使用淘汰之前是否发生了更改
- 通过它访问HTML元素's id DIRECTLY-这里发生了什么
- window.opener引用在Java 1.7.0_04-b20中从Applet重定向期间发生了更改,但在1.7.0_
- 如何知道JS对象属性的值在哪一行发生了更改
- 查找表单的哪些特定部分在输入时发生了更改
- JavaScript's数组过滤器函数在没有分配函数的情况下使用-这里发生了什么
- 起重行为在铬 48 和 49 之间发生了变化
- 这个JavaScript函数中发生了什么
- 我的输入字段听到除回车之外的每个“键下”事件.我有一个日期选择器,不确定发生了什么
- isPrototypeOf 说不,但实例说是——发生了什么
- 找出 Vue.js 深度自定义指令中哪个属性发生了变化
- 十分钟内的 Javascript:此示例代码中发生了什么说明惰性范围
- 键控后 AJAX 发生了一些奇怪的事情
- 发送到前端后,mysql 列中的日期发生了变化
- 这个JavaScript三元运算符中发生了什么