文章目录
前言
小阿乐习题笔记,记不住啊记不住。
正则表达式
1、\w表示字母、数字、下划线 \W表示除了字母、数字下划线的字符
2、/a?/ ?量词表示匹配0次或1次 + 表示匹配一次或多次 * 表示匹配0次或无数次
3、i 表示忽略大小写 g表示全局匹配 m表示多行匹配
4、捕获组使用 \1
Javascript中Null与Undefined区别
null类型也只有一个值,即null。undefined实际上是从null派生而来的,因此ECMAScript把他们定义为相等的。
alert(null == undefined); //output "true"
尽管两个值相等,但是他们的含义却不一样,undefined是声明了变量但为对其初始化时赋予该变量的值,null则用于表示尚未存在的对象。如果函数要返回的是对象,那么找不到该对象时,返回的通常是null。
如果用严格比较符===,不发生转化,将返回false。
function Foo(){'use strict'
console.log(this.location);
}
Foo()//TypeError
注意严格模式下 this 在各种应用场景的指向即可:
- 在函数中的 this 指向:this === undefined
- 在全局中的 this 指向:this.window === window
其他的 this 指向均是与非严格模式的this指向一样,只有 函数中的 this 要注意,是 undefined
关于Javascript中数字的部分知识总结
1.Javascript中,由于其变量内容不同,变量被分为基本数据类型变量和引用数据类型变量。基本类型变量用八字节内存,存储基本数据类型(数值、布尔值、null和未定义)的值,引用类型变量则只保存对对象、数组和函数等引用类型的值的引用(即内存地址)。JavaScript内部,所有数字都是以64位浮点数形式储存,即使整数也是如此
2. JS中的数字是不分类型的,也就是没有byte/int/float/double等的差异。
NOSCRIPT标签用来定义在脚本未被执行时的替代内容。也可以用在检测浏览器是否支持脚本,若不支持脚本则可以显示NOSCRIPT标签里的innerText
noscript:用以在不支持js的浏览器中显示替代的内容,这个元素可以包含能够出现在文档中任何html元素,script元素除外。包含在noscript元素的内容只有在下列情况下才会显示出来
1.浏览器不支持脚本
2.浏览器支持脚本,但脚本被禁用
语句var arr=[a,b,c,d];执行后,数组arr中每项都是一个整数
Math.max(arr[0], arr[1], arr[2], arr[3])
Math.max.call(Math, arr[0], arr[1], arr[2], arr[3])
Math.max.apply(Math,arr)//apply以数组传递参数,call独立传递。
setDate(n);
n表示一个月中的一天的一个数值(1 ~ 31):
0 为上一个月的最后一天
-1 为上一个月最后一天之前的一天
如果当月有 31 天:
32 为下个月的第一天
如果当月有 30 天:
32 为下一个月的第二天;
40 为下一个月的第9天;
setMonth(month,day),这里month是0-11分别对应1-12月
Math.round(x)
如果参数的小数部分大于 0.5,则舍入到下一个绝对值更大的整数;
如果参数的小数部分小于 0.5,则舍入到下一个绝对值更小的整数;
如果参数的小数部分恰好等于0.5,则舍入到下一个在正无穷(+∞)方向上的整数。注意,与很多其他语言中的round()函数不同,Math.round()并不总是舍入到远离0的方向(尤其是在负数的小数部分恰好等于0.5的情况下)如3.5=5,-3.5=-3
常见的请求头和响应头
1)请求(客户端->服务端[request])
GET(请求的方式) /newcoder/hello.html(请求的目标资源) HTTP/1.1(请求采用的协议和版本号)
Accept: /(客户端能接收的资源类型)
Accept-Language: en-us(客户端接收的语言类型)
Connection: Keep-Alive(维护客户端和服务端的连接关系)
Host: localhost:8080(连接的目标主机和端口号)
Referer: http://localhost/links.asp(告诉服务器我来自于哪里)
User-Agent: Mozilla/4.0(客户端版本号的名字)
Accept-Encoding: gzip, deflate(客户端能接收的压缩数据的类型)
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT(缓存时间)
Cookie(客户端暂存服务端的信息)
Date: Tue, 11 Jul 2000 18:23:51 GMT(客户端请求服务端的时间)
2)响应(服务端->客户端[response])
HTTP/1.1(响应采用的协议和版本号) 200(状态码) OK(描述信息)
Location: http://www.baidu.com(服务端需要客户端访问的页面路径)
Server:apache tomcat(服务端的Web服务端名)
Content-Encoding: gzip(服务端能够发送压缩编码类型)
Content-Length: 80(服务端发送的压缩数据的长度)
Content-Language: zh-cn(服务端发送的语言类型)
Content-Type: text/html; charset=GB2312(服务端发送的类型及采用的编码方式)
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT(服务端对该资源最后修改的时间)
Refresh: 1;url=http://www.it315.org(服务端要求客户端1秒钟后,刷新,然后访问指定的页面路径)
Content-Disposition: attachment; filename=aaa.zip(服务端要求客户端以下载文件的方式打开该文件)
Transfer-Encoding: chunked(分块传递数据到客户端)
Set-Cookie:SS=Q0=5Lb_nQ; path=/search(服务端发送到客户端的暂存数据)
Expires: -1//3种(服务端禁止客户端缓存页面数据)
Cache-Control: no-***(服务端禁止客户端缓存页面数据)
Pragma: no-***(服务端禁止客户端缓存页面数据)
Connection: close(1.0)/(1.1)Keep-Alive(维护客户端和服务端的连接关系)
Date: Tue, 11 Jul 2000 18:23:51 GMT(服务端响应客户端的时间)
在服务器响应客户端的时候,带上Access-Control-Allow-Origin头信息,解决跨域的一种方法。
函数提升
- 变量声明、函数声明都会被提升到作用域顶处;
- 当出现相同名称时,优先级为:变量声明 < 函数声明< 变量赋值
var f = function g() {
return 23;
};
typeof g();
在 JS 里,声明函数只有 2 种方法:
第 1 种: function foo(){…} (函数声明)
第 2 种: var foo = function(){…} (等号后面必须是匿名函数,这句实质是函数表达式)
除此之外,类似于 var foo = function bar(){…} 这样的东西统一按 2 方法处理,即在函数外部无法通过 bar 访问到函数,因为这已经变成了一个表达式。
但为什么不是 “undefined”?
这里如果求 typeof g ,会返回 undefined,但求的是 g(),所以会去先去调用函数 g,这里就会直接抛出异常,所以是 Error。
函数的调用方式
直接调用
作为对象方法调用
作为构造函数调用
通过call和apply方法调用
Readonly只针对input(text/password)和textarea有效,而disabled对于所有的表单元素有效,包括select,radio,checkbox,button等。
web页面生命周期
- 浏览器的一般加载顺序为(同步的script):
script executed;
readyState:interative;
DOMContentLoaded;
image onload;
iframe onload ;
readyState:complete ;
window:onload
- 可以看出来:
同步的script总是先于其他事件执行,而window.onload事件总是最后执行,image/iframe的执行顺序总是在中间,具体是不固定的
- 需要记住:
同步的script总是先执行的,比DOMContentLoaded先执行
- 在DOM准备就绪之后(
也就是页面文档完全载入并且解析完成之后,仅仅是页面文档,不包括外部资源
),DOMContentLoaded事件在document上触发,我们在DOMContentLoaded阶段使用js操作DOM节点,这也意味着程序执行从同步脚本阶段转移到事件驱动阶段
- 在js脚本执行完毕之后,可能还有异步外部资源(iframe,img)在载入过程中
- 网页所有资源都
载入完毕,才开始执行document.onload事件
- 如果再细分,我们可以使用document.readyState来表示文档的当前状态
- loading:文档正在载入
- interactive:在DOMContentLoaded
之前
触发,相差时间很短 - complete:在document.onload
之前
触发,相差时间很短,此时也已经完全加载所有资源
PS:
document有readyState属性来描述document的loading状态,readyState的改变会触发readystatechange事件.readystatechange事件在onload之前触发
loading
文档仍然在加载
interactive
文档结束加载并且被解析,但是像图片,样式,frame之类的子资源仍在加载
complete
文档和子资源已经结束加载,该状态表明将要触发load事件。
onpageshow 事件在用户浏览网页时触发。
onpageshow 事件类似于 onload 事件,onload 事件在页面第一次加载时触发, onpageshow 事件在每次加载页面时触发,即 onload 事件在页面从浏览器缓存中读取时不触发。
beforeunload当浏览器窗口,文档或其资源将要卸载时,会触发beforeunload事件。这个文档是依然可见的,并且这个事件在这一刻是可以取消的.
如果处理函数为Event对象的returnValue属性赋值非空字符串,浏览器会弹出一个对话框,来询问用户是否确定要离开当前页面(如下示例)。有些浏览器会将返回的字符串展示在弹框里,但有些其他浏览器只展示它们自定义的信息。没有赋值时,该事件不做任何响应。
DOMContentLoaded当初始的 HTML 文档被完全加载和解析完成之后,DOMContentLoaded 事件被触发,而无需等待样式表、图像和子框架的完成加载。
另一个不同的事件 load 应该仅用于检测一个完全加载的页面。因此DOMContentLoaded是HTML完全加载和解析完成之后发生的,发生时间点要早于load,选D。
在使用 DOMContentLoaded 更加合适的情况下使用 load 是一个令人难以置信的流行的错误,所以要谨慎。
注意:DOMContentLoaded 事件必须等待其所属script之前的样式表加载解析完成才会触发。
最新的 ECMAScript 标准定义了8种数据类型:
七种基本数据类型:
布尔值(Boolean),有2个值分别是:true 和 false.
null , 一个表明 null 值的特殊关键字。 JavaScript 是大小写敏感的,因此null与Null、NULL或变体完全不同。
undefined ,和 null 一样是一个特殊的关键字,undefined 表示变量未赋值时的属性。
数字(Number),整数或浮点数,例如: 42 或者 3.14159。
任意精度的整数 (BigInt) ,可以安全地存储和操作大整数,甚至可以超过数字的安全整数限制。
字符串(String),字符串是一串表示文本值的字符序列,例如:“Howdy” 。
代表(Symbol) ( 在 ECMAScript 6 中新添加的类型).。一种实例是唯一且不可改变的数据类型。
以及对象(Object)。