《JavaScript高级程序设计(第3版)》

2017-09-11  本文已影响15人  Andy丶Go

1、JavaScript:
JavaScript是一种专为与网页交互而设计的脚本语言,由以下三部分组成:ECMScript,提供核心语言功能;DOM(文档对象模型),提供访问和操作网页内容的方法和接口;BOM(浏览器对象模型),提供与浏览器交互的方法和接口。

2、宿主环境:
Web浏览器只是宿主环境之一,所谓宿主环境是指不仅提供语言的基本实现,同时也会提供该语言的扩展,以便语言与环境之间对接交互,其它宿主环境包括Node、Adobe Flash。

3、<script>元素的6个属性:
<1>src,可选,表示包含要执行代码的外部文件路径,与<img>的src属性相似,可以实现文件的跨域访问。
<2>charset,可选,表示通过src属性指定的代码的字符集,默认是utf-8编码,但大多数浏览器会忽略掉它的值,所以少有人使用。
<3>language,已废弃,原用于表示编写代码使用的脚本语言。
<4>type,可选,可作为language的替代属性,表示编写代码使用的脚本语言的内容类型。
<5>defer,可选,脚本延迟属性,表示立即下载脚本但可以延迟到文档完全解析和显示之后再执行,只对外部脚本文件有效。HTML5规范要求按照它们出现的先后顺序延迟执行,但实际操作并不一定,因此最好只包含一个延迟脚本。
<6>async,可选,脚本异步加载属性,表示立即下载脚本,但不应妨碍页面中的其它操作(即页面主体内容与脚本同时进行加载,互不影响,但脚本加载完成后会立即执行),所以并不保证脚本会按照其先后顺序执行,建议异步脚本不要在加载期间修改DOM,同样该属性只对外部脚本有效。

4、Js引用的两种方法:
向HTML页面中插入JavaScript的主要方法就是使用<script>元素的两种方式:直接在页面中嵌入JavaScript代码和通过其src属性指定包含JavaScript代码的外部文件路径。使用外部文件有如下优点:方便维护、可缓存(多页面引用只需加载一次),适应未来(HTML和XHTML包含外部文件的语法是相同的,即无需写兼容注释)。

说白了就是JS的两种引用方式,以及外部引用的优点!

5、置后加载Js:
现代Web应用程序一般都把全部JavaScript引用放在<body>元素中页面内容的后面,这样在解析JavaScript代码之前,页面内容将完全呈现在浏览器之中,而用户也会因为浏览器窗口显示空白页面的时间缩短而感到打开页面的速度加快。

JS置后加载,这是欺诈!

6、CData片段:
在XHTML中,CData片段是文档中的一个特殊区域,这个区域中可以包含不需要解析的任意格式的文本内容。由于XHTMl的严格性,有些HTML规则在XHTML中不适用,为保证相同的JS代码在XHTML中正常运行,我们通常会在兼容XHTML的浏览器中用CData片段来包含JS代码,在不兼容XHTNL的浏览器中,使用JS注释将CData片段注释就可以了。CData片段写法:

<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
  {
  return 1;
  }
else
  {
  return 0;
  }
}
]]>
</script>

7、<noscript>元素:
<noscript>元素,用以在不支持JS的浏览器中显示替代的内容,内容可以包含除<script>元素外文档中的任何HTMl元素,且只会在浏览器不支持脚本或脚本被禁用时显示出来。

8、isFinite() 函数:
isFinite() 函数用于检查其参数是否是无穷大。

如果 number 是有限数字(或可转换为有限数字),那么返回 true。否则,如果 number 是 NaN(非数字),或者是正、负无穷大的数,则返回 false。

9、parseInt() 函数与parseFloat() 函数:
parseInt() 函数解析一个字符串参数,并返回一个指定基数的整数 (数学系统的基础)。

a、有两个参数,第一个必须,第二个可选,但始终指定此参数可以保证转换结果可预测。
b、第一个参数如果不是一个字符串,则将其转换为字符串。第二个参数是一个介于2和36之间的整数,表示上述字符串的基数,比如参数"10"表示十进制数值系统。当未指定基数时,通常将值默认为10。ECMAScript 5 移除了八进制解析。
c、字符串开头的空白符将会被忽略。如果参数字符串的第一个字符不能被解析成为数字,则返回NaN。

parseFloat() 函数解析一个字符串参数并返回一个浮点数。

a、只有一个参数,且只解析为十进制。
b、如果参数字符串的第一个字符不能被解析成为数字,则返回NaN。参数字符串首位的空白符会被忽略。

10、for...in 语句:
for...in 语句是一种精准的迭代语句,可以用来枚举对象的属性。

通俗来讲就是用来遍历对象的,就像用for语句来遍历数组一样。

11、label 语句:
label 语句,即标签语句,一般都要与循环语句配合使用。在循环语句中与break和continue语句联合使用,从而返回到代码中的特定位置,多用于退出循环嵌套的情况下。

a、给我的感觉和a标签的锚点作用类似,label语句的标签可以自定义,但尽量避开关键字和保留字。
b、break和continue语句常用在控制循环语句的流程上。

12、switch语句:

switch(n){
    case value1:
        执行代码块 1
        break;
    case value2:
       执行代码块 2
       break;
    default:
       n 与 case value1 和 case value2 不同时执行的代码
}

1、case值的含义是如果表达式(n)等于这个值(value),则执行后面的语句。case的值不一定是常量,可以是变量,甚至是表达式。
2、break关键字是用来使代码执行流跳出switch语句,如果省略break会导致执行完当前case后继续执行下一个case。
3、default关键字则用于在表达式不匹配前面任何一种情形的时候执行此代码。
4、switch语句在比较值时使用的是全等操作符(===),因此不会发生类型转换。

13 、 函数:

14、参数:

15、变量:

16、传参:

17、检测类型:

colors instanceof Array //变量 colors 是 Array 吗?

确定一个值是哪种基本类型可以使用 typeof 操作符,而确定一个值是哪种引用类型可以使用 instanceof 操作符。

18、执行环境与作用域:

19、延长作用域链:

20、垃圾收集:

上一篇下一篇

猜你喜欢

热点阅读