1、MIME类型:
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型,是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开;
它设计的最初目的是为了在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理(即指定应用程序打开);
最早的HTTP协议中,并没有附加的数据类型信息,所有传送的数据都被客户程序解释为超文本标记语言HTML 文档,而为了支持多媒体数据类型,HTTP协议中就使用了附加在文档之前的MIME数据类型信息来标识数据类型:
由于MIME类型与文档的后缀相关,因此服务器使用文档的后缀来区分不同文件的MIME类型,服务器中必须定义文档后缀和MIME类型之间的对应关系;
而客户程序从服务器上接收数据的时候,它只是从服务器接受数据流,并不了解文档的名字,因此服务器必须使用附加信息来告诉客户程序数据的MIME类型;
服务器在发送真正的数据之前,就要先发送标志数据的MIME类型的信息,这个信息使用Content-type关键字进行定义:
例如对于HTML文档,服务器将首先发送以下两行MIME标识信息,这个标识并不是真正的数据文件的一部分:
Content-type:text/html
注意,第二行为一个空行,这是必须的,使用这个空行的目的是将MIME信息与真正的数据内容分隔开。
每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类:如text/javascript。
2、包含在<script>元素内部的js代码将被解释器从上至下依次解释。
3、浏览器不会检查包含JavaScript的文件的扩展名,但是服务器通常需要看扩展名决定响应应用哪种MIME类型:
浏览器作为客户端程序,只是从服务器接收数据流,并不了解文件的名字,当然也不会检查文件的扩展名;
浏览器需要指定应用程序来处理接收到的文件,就必须要知道文件的MIME类型;
而文件的MIME类型信息是由服务器将其附加在文件之前;
服务器为使用文件的扩展名来区分不同文件的MIME类型(方便存储/管理文档),就必须定义文件的扩展名与MIME类型之间的对应关系。
文档 VS 文件?:
文档是用来存储文字、数据格式的资料;
文件的定义就很宽泛,凡是存储数据的基本上都可以称为文件。
XML:
可扩展标记语言(EXtensible Markup Language);
被设计为传输和存储数据,而非显示数据,关注的是数据的内容;
标签没有被预定义,需要自行定义标签;
被设计为具有自我描述性:
<!--================== Block level elements ==============================-->
<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
以上两句来自http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd,显然就是在定义块级元素实体heading;
DTD文件是一个ASCII的文本文件,后缀名为.dtd。
DTD与XML的关系:
是XML1.0版规格的一部分,它是XML文件的验证机制,属于XML文件组成的一部分,DTD在XML文件所扮演得角色就是定义XML文件的元素架构、元素标记和属性;
定义好DTD,再使用编辑工具如XML Spy 或者验证工具 XML validate就可以对编写好的XML文件进行DTD检查内容是否为合法的XML文件内容;
DTD拥有自己独特的语法和编写方式,它和XML文件的标记架构完全不同。
XSD:
XML结构定义(XML Schemas Definition),是DTD的替代品;
XSD中会定义:文档中出现的元素、子元素、子元素的数量、子元素的顺序、元素是否为空、元素和属性的数据类型、元素或属性的默认和固定值;
代替DTD的原因:一是依据将来的条件可扩展,二是比DTD丰富和有用,三是用XML书写,四是支持数据类型,五是支持命名空间。
命名空间:
Namespace,表示标识符(identifier)的上下文(context);
一个标识符可在多个命名空间中定义,它在不同命名空间中的含义是互不相干的;
这样,在一个新的命名空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其它命名空间中。
在大型的计算机程序或文档中,往往会出现数百或数千个标识符;
命名空间提供一隐藏区域标识符的机制;
通过将逻辑上相关的标识符组织成相应的命名空间,可使整个系统更加模块化。
上下文(context):
程序在任意一个时刻都有自己的状态,状态在代码中体现为存储器的一些数值,在高级层面可以理解为context的一些属性;
context记录了此时状态下的所有环境信息,作用主要是:
1.切换状态的时候,便于将来对原先状态的重置;
2.切换到新的状态的时候,可以从context中获取有效的信息。
对于代码中某个值来说,上下文是指这个值所在的局部(全局)作用域对象;
相对于进程而言,上下文就是进程执行时的环境,具体来说就是各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存(堆栈)信息等。
XML是不作为的,仅仅是包装信息,需要编写软件/程序,才能传送、接收和显示出这个文档;
XML不会替代HTML,在大多数web应用程序中,XML用于传输数据,而HTML用于格式化并显示数据。
HTML:
超文本标记语言(Hyper Text Markup Language);
HTML文档包含HTML标签和纯文本;
HTML文档也被称为网页。
XHTML:
可扩展超文本标记语言;
与HTML 4.01 几乎是相同的;
是更严格更纯净的HTML版本:
是以XML应用的HTML,结合二者的长处。
与HTML的区别:
文档结构:
XHTML DOCTYPE 是强制性的:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html> 中的 XML namespace 属性是强制性的:
<html xmlns="http://www.w3.org/1999/xhtml">
<html>、<head>、<title> 以及 <body> 是强制性的。
元素语法:
正确嵌套、始终关闭、必须小写、必须有一个根元素。
属性语法:
必须小写、引号包围、禁止最小化(当属性名和属性值相同时)
HTML5:
将成为HTML、XHTML、HTML DOM的新标准,但仍处于完善中;
是W3C与WHATWG合作的结果:
W3C 指 World Wide Web Consortium,万维网联盟;
WHATWG 指 Web Hypertext Application Technology Working Group;
WHATWG 致力于 web 表单和应用程序,而 W3C 专注于 XHTML 2.0;
在 2006 年,双方决定进行合作,来创建一个新版本的 HTML。
有趣的新特性:
用于绘画的canvas元素;
用于媒体播放的video和audio元素;
对本地离线存储的更好的支持;
新的特殊内容元素,比如article、footer、header、nav、section;
新的表单控件,比如calendar、date、time、email、url、search。
5、HTML字符实体:
用于正确地显示HTML中的预留字符,比如<;
常见的字符实体(注意有个分号):

6、字符集与字符编码:
字符集(Charset):是一个系统支持的所有抽象字符的集合,包括各国家文字、标点符号、图形符号、数字等;
字符编码(Charset Encoding):将字符变换到二进制比特数据的过程/规则,通常是让字符与字节组合形成映射;
常见字符集:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集;
ASCII字符集&编码:
ASCII字符集:包括控制字符(回车键、退格、换行键等)和可显示字符(英文大小写字符、阿拉伯数字、西文符号),并等同于国际标准ISO/IEC 646,最大缺点是只能显示26个基本拉丁字母、阿拉伯数目字和英式标点符号,只能用于显示现代美国英语;
ASCII编码:
使用7bit表示一个字符,0000 0000 到 0111 1111,0-127共128个字符(0:48,A:65,a:97);
为表示更多欧洲常用符号,其扩展字符集EASCII使用8bit表示一个字符。
GBxxxx字符集&编码:
GB2312字符集:或GB2312-80,全称《信息交换用汉字编码字符集·基本集》,又称GBo,通行于中国大陆,共收录6763个汉字和682个其它符号,基本满足汉字的计算机处理需要,但不能处理人名、古汉语等方面出现的罕用字、繁体字、日语及朝鲜语汉字;
GB2312字符编码:
单字节(0-127)依旧表示ASCII码,实际上双字节编码里也把这128个字符编进去,前者叫做半角字符,后者叫做全角字符;
双字节表示汉字,双字节首位均为1:
高字节:0xA1:1010 0001 10*16+1=161 到 0xF7:1111 0111 15*16+7=247 247-161+1=87
低字节:0xA1:1010 0001 10*16+1=161 到 0xFE:1111 1110 15*16+14=254 254-161+1=94
字符空间:
87*94=8178;
高字节代表共分87区(01-87)?,低字节代表每区94个汉字/符号,即区位码:
01-09区为特殊符号;
16-55区为一级汉字,按拼音排序;
56-87区为二级汉字,按部首/笔画排序;
10-15区及88-94区?则未有编码;
计算示例:汉字 0xB0A1,其中高字节0xB0 = 0xA0 + 16,低字节0xA1 = 0xA0 + 01,故该汉字的区号为16,位号为01。
GBK字符集:
即汉字内码扩展规范,K(Kuo zhan中的K),英文全称 Chinese Internal Code Specification;
微软利用GB2312-80未使用的编码空间,收录GB13000.1-93全部字符制定了GBK编码,自身并非国家标准;
GBK向下与GB2312完全兼容,向上支持ISO 10646国际标准,同样采用双字节表示。
GBK字符编码:
总体编码范围为 8140-FEFE 之间,首字节在 81-FE 之间,尾字节在 40-FE 之间,剔除 XX7F 一条线;
编码区分三部分:
汉字区:
GBK/2:0XB0A1-F7FE, 收录 GB 2312 汉字 6763 个,按原序排列;GBK/3:0X8140-A0FE,收录 CJK 汉字 6080 个;
GBK/4:0XAA40-FEA0,收录 CJK 汉字和增补的汉字 8160 个。
图形符号区:
GBK/1:0XA1A1-A9FE,除 GB 2312 的符号外,还增补了其它符号;GBK/5:0XA840-A9A0,扩除非汉字区。
用户自定义区:
GBK 区域中的空白区,用户可以自己定义字符。
GB18030字符集:
全称 国家标准GB18030-2005《信息技术 中文编码字符集》,是中华人民共和国现时最新的内码字集,是GB18030-2000《信息技术 信息交换用汉字编码字符集 基本集的扩充》的修订版;
与GB2312-1980完全兼容,与GBK基本兼容,支持GB13000及Unicode的全部统一汉字,共收录汉字70244个;
与UTF-8相同,采用多字节编码,每个字可以由1个、2个或4个字节组成;
编码空间庞大,最多可定义161万个字符;
持中国国内少数民族的文字,不需要动用造字区;
汉字收录范围包含繁体汉字以及日韩汉字。
GB18030字符编码:
单字节,其值从 0 到 0x7F,与 ASCII 编码兼容;
双字节,第一个字节的值从 0x81 到 0xFE,第二个字节的值从 0x40 到 0xFE(不包括0x7F),与 GBK 标准兼容;
四字节,第一个字节的值从 0x81 到 0xFE,第二个字节的值从 0x30 到 0x39,第三个字节从0x81 到 0xFE,第四个字节从 0x30 到 0x39。
Big5字符集&编码:
Big5字符集:又称为大五码或五大码,是使用繁体中文(正体中文)社区中最常用的电脑汉字字符集标准,共收录13,060个汉字。中文码分为内码及交换码两类,Big5属中文内码,知名的中文交换码有CCCII、CNS11643。Big5虽普及于台湾、香港与澳门等繁体中文通行区,但长期以来并非当地的国家标准,而只是业界标准。
中文内码和中文交换码:二进制数形式与16进制数形式的差别?
Big5字符编码:
双字节表示一个汉字;
高位字节使用0x81-0xFE,低位字节使用0x40-0x7E,及0xA1-0xFE:

Unicode字符集&编码:
Unicode字符集:
统一码、万国码、单一码、标准万国码;
基于通用字符集(Universal Character Set)的标准来发展:
通用字符集 UCS 是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的标准字符集。
使用4字节的数字来表达每个字母、符号,或者表意文字(ideograph),每个数字代表唯一的至少在某种语言中使用的符号,不存在二义性。
Unicode字符编码:
UTF-32:每个字符使用4字节表示;
UTF-16:
将0–65535范围内的字符编码成2个字节;
超过65535的Unicode字符则另行规定。
注意:
对于UTF-32和UTF-16编码方式,不同的计算机系统会以不同的顺序保存字节;
这意味着字符U+4E2D在UTF-16编码方式下可能被保存为4E 2D或者2D 4E,这取决于该系统使用的是大尾端(big-endian)还是小尾端(little-endian)。
大/小尾端:
一个二进制数,类比普通的10进制数,左边为高位,右边为低位;
而在计算机中的存储地址里(通常以字节形式呈现),左边为低地址位,右边位高地址位;

为解决这个问题:
多字节的Unicode编码方式定义了一个"字节顺序标记(Byte Order Mark)";
它是一个特殊的非打印字符,你可以把它包含在文档的开头来指示你所使用的字节顺序;
对于UTF-16,字节顺序标记是U+FEFF:
如果收到一个以字节FF FE开头的UTF-16编码的文档,你就能确定它的字节顺序是单向的(one way);
如果它以FE FF开头,则可以确定字节顺序反向。
UTF-8:
使用一至四个字节为每个字符编码;
128个US-ASCII字符只需一个字节编码(Unicode范围由U+0000至U+007F);
带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要二个字节编码(Unicode范围由U+0080至 U+07FF);
其他基本多文种平面(BMP)中的字符(这包含了大部分常用字)使用三个字节编码;
其他极少使用的Unicode辅助平面的字符使用四字节编码;
UTF-8不再存在字节顺序的问题;
注意编码汉字,UTF-8需要3个字节,而GBK只需2个字节。
HTTP中与字符集&编码相关的:
Accept-Charset:浏览器申明自己接收的字符集,这就是本文前面介绍的各种字符集和字符编码,如gb2312,utf-8(通常我们说Charset包括了相应的字符编码方案);
Accept-Encoding:浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate),(注意:这不是只字符编码);
Accept-Language:浏览器申明自己接收的语言。语言跟字符集的区别:中文是语言,中文有多种字符集,比如big5,gb2312,gbk等等;
Content-Type:web服务器告诉浏览器自己响应的对象的类型和字符集。例如:Content-Type: text/html; charset='gb2312';
Content-Encoding:web服务器表明自己使用了什么压缩方法(gzip,deflate)压缩响应中的对象。例如:Content-Encoding:gzip;
Content-Language:web服务器告诉浏览器自己响应的对象的语言。
7、浏览器能够根据具体的设置缓存链接的所有外部js文件?
8、文档模式?:
<!DOCTYPE ...>
通过使用文档类型(doctype)切换实现的;
分为混杂模式、标准模式以及准标准模式;
主要影响CSS内容的呈现,但在某些情况下也影响js的解释执行。
9、hack技术?
10、浏览器让页面平稳地退化?
11、ECMAScript 5 引入了严格模式的概念?:
''use strict";
12、final static 内存分配?
13、js引擎?
14、ECMAScript数据类型具有动态性?
undefined和null的区别
15、派生?:
undefined值是派生自null值的
16、区分操作符与函数:
函数传递参数需要括号
17、NaN?
18、Number类型使用IEEE754格式来表示整点和浮点数值?
19、Number(对象) 过程验证?
20、length属性返回的字符数包括16位字符的数目?:
如果字符串中包含双字节字符,该属性可能不会精确地返回字符串中的字符数目。
21、js中需要用到引号的地方?:
字符串变量的值;
函数的参数;
函数的返回值;
...
22、方法与函数?:
toString()方法、String()函数
23、对象实例和实例的原型?
24、toLocaleString():
执行环境的地区?
浙公网安备 33010602011771号