while和for循环的目的是什么,if代码中的语句
What is the purpose of while and for loops, if statement in this code?
我试图理解JavaScript中Cookie的概念。为此,我试图从 http://www.w3schools.com/js/tryit.asp?filename=tryjs_cookie_username 理解这段代码的工作原理:
<script>
function setCookie(cname,cvalue,exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires=" + d.toGMTString();
document.cookie = cname+"="+cvalue+"; "+expires;
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1);
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function checkCookie() {
var user=getCookie("username");
if (user != "") {
alert("Welcome again " + user);
} else {
user = prompt("Please enter your name:","");
if (user != "" && user != null) {
setCookie("username", user, 30);
}
}
}
</script>
我已经理解了这段代码中的大部分内容,但我仍然有一些疑问/查询(在getCookie函数中):
疑问 1.for 循环的目的
疑点 2.如果的目的
疑点 3.while 循环的目的
疑问 4.返回目的 ";
我问这些是因为即使不使用这些条件,脚本也能正常运行。(我知道getCookie函数中每个内置函数的工作。我只是不明白上述循环和条件的使用)。
以下是我想说的:
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
var c = ca[0];
return c.substring(name.length, c.length);
}
即使我在函数(exdays*2000
)中将到期日期更改为过去的日期setCookie
),它仍然显示"欢迎使用 XYZ"消息。这意味着 Cookie 不会被删除。但是当我在不同的浏览器中运行相同的代码时,它被删除了。为什么会这样?
疑问 1.for 循环的目的
所有 cookie 都保存为分号分隔的键值(实际上是分号和空格;
.key值由等号 (=
) 分隔。通过迭代,您将检查所有键并仅返回与传递给方法的参数匹配的键值
疑点 2.如果的目的
检查迭代中的当前键是否包含传递给方法的 cookie 名称。
疑点 3.while 循环的目的
逐个删除所有空格。实际上,使用trim()
方法可以轻松改进这一点。
//while (c.charAt(0)==' ') c = c.substring(1);
c = c.trim();
疑问 4.返回目的 ";
如果未找到值,则返回一个空字符串,而不是用户必须检查null
或undefined
。
即使我在 setCookie 中将到期日期更改为过去的日期 函数(exdays*2000),它仍然显示"欢迎来到XYZ" 消息。这意味着 Cookie 不会被删除。但是当我运行相同的内容时 代码,它将被删除。为什么会这样?
当您在同一浏览器上第二次打开该页面时,您的 setCookie 方法可能没有执行(假设这一点,因为您没有共享任何小提琴)。
疑问 1.for 循环的目的
Cookie 存储为单行字符串,如下所示:
"Cookie_1=Cookie_value1; Cookie_2=Cookie_value2; Cookie_3=Cookie_value3; Cookie_4=Cookie_value4;"
然后将其拆分为数组
var ca = document.cookie.split(';');
所以 ca 的值现在是 ["Cookie_1=Cookie_value1"、"Cookie_2=Cookie_value2"、"Cookie_3=Cookie_value3"、"Cookie_4=Cookie_value4","]可以将其视为数组每个成员的cookie"实体"
疑点 3.while 循环的目的
如果您查看 ca
数组中的值,您会发现 Cookie 2 的值为 " Cookie_2=Cookie_value2"
。我们需要修剪掉一些前导空格,因此这就是这个while循环的目的
while (c.charAt(0)==' ') c = c.substring(1);
疑点 2.如果的目的
修剪前导空格后,您可以检查 cookie 名称是否与您正在寻找的名称匹配。例如,"Cookie_3=Cookie_value3".indexOf("Cookie_3=")
等于 0
疑问 4.返回目的 ";
这只是在找不到指定的 cookie 名称时返回的默认值,类似于开关大小写中的默认值。
- PHP代码中实现的JavaScript |if语句不起作用
- 此 JavaScript 代码无法正常工作(if-else 语句)
- 通过找到一种删除许多 if 语句的方法来简化代码
- PHP、JS和带有if-else语句的代码点火器脚本
- 重用if语句中的代码.(功能内部的功能是不良做法吗?)
- 嵌套if语句中的else语句.这段代码如何知道要执行哪个else语句
- 简化此If语句,使其不会't重复代码-Javascript
- 为什么在Javascript中可能会跳过带有IF ELSE的代码块的原因
- JQuery 悬停代码:添加 If 语句会破坏它
- 简化此JavaScript代码块(IF)
- 带有 if 语句的 JavaScript 在 C# 后面的代码中触发按钮 asp.net
- if 语句中的一部分 JavaScript 代码运行,而同一块中的其余代码不执行.我在这里错过了什么
- JS 在不满足条件时在 if 语句中运行代码段
- 选中复选框代码不起作用 if($('#primayins').attr('checked'
- Javascript 多个嵌套 if 语句不适用于 Rails 代码
- 代码将同时执行 if 和 else 语句.Javascript
- Javascript - 如何避免像下面给出的代码片段这样的 if 语句
- while和for循环的目的是什么,if代码中的语句
- 如何使PHP“if”代码在与Java脚本一起使用自动提交时工作
- 更干净/更简单的jquery编写方式"if"代码