计时器setTimeout()与setInterval()是原生JS很重要且用处很多的两个方法, 但很多人一直误以为是相同的功能: 间隔时间重复执行传入的句柄函数. 但实际上, 并非如此, 既然JS给出了两个不同的命名, 肯定有其迥异之处. 先来看看两者JS手册及英文词典上的解释: JS手册»setTimeout() : 用于在指定的毫秒数后调用函数或计算表达式; 英文释义»timeout() : 超时;暂时休息;工间休息; JS手册»setInterval() : 按照指定的周期(以毫秒计)来调用函数或计算表达式. 会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭; 英文释义»interval() : 间隔;间距;幕间休息; 不难看出, 只要我们仔细体会JS手册及命名释义, 就能很容易的区分开两者的区别. 简单的说, 两才的区别在于,setTimeout()方法是在等待指定时间后执行函数, 且只执行一次传入的句柄函数. setInterval()方法是每指定间隔时间后执行一次传入的句柄函数,循环执行直至关闭窗口或clearInterval(). |
|
操作
|
回滚
|
高水线
|
空间
|
效率
|
Truncate
|
不能
|
下降
|
回收
|
快
|
delete
|
可以
|
不变
|
不回收
|
慢
|
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。 |
package com.newbie.test;
public class Interview {
public static void main(String[] args) {
new Child().printx();
}
}
class Child extends Father{
static {
System.out.println("Child --> static");
}
private int n = 20;
//构造代码块在构造函数之前执行,构造代码块初始化在成员变量显示初始化之后
{
//System.out.println(n);
n = 30;
System.out.println("n=" + n);
}
public Child(){
this("The other construction");
//當程序執行到這時,成員變量并未显示初始化
System.out.println("Child construction body : " + n);
}
public Child(String s){
System.out.println(s);
}
public void age(){
System.out.println("age=" + n);
}
public void printx(){
System.out.println("x=" + x);
}
public static void main(String[] args){
new Child().printx();
}
}
class Father{
static {
System.out.println("super --> static");
}
private static int n = 10;
public int x = 100;
public Father(){
System.out.println("super's x=" + x);
age();
}
public void age(){
System.out.println("nothing");
}
public void printx(){
System.out.println("x=" + x);
}
}
Child --> static
super's x=100
age=0
n=30
The other construction
Child construction body : 30