周记
这里是刚入门的前端小萌新一枚,本博客暂时只是用来总结自己平时所学到的一点小知识。希望,能鞭策自己努力进步!上一周看了红宝石的前三章(JavaScript高级程序设计 第三版),状态不太好,所以看得比较慢。不过,不管看了多少,也希望自己能够好好总结一下,从中获取的新的知识点。
第一章 JavaScript简介
本章节主要就是介绍了JavaScript的发展历史,JavaScript包含了哪几个部分以及JavaScript的各个版本在各个主流浏览器中的支持情况。
小结
JavaScript是一种专为与网页交互而设计的脚本语言,由三个部分组成:
- ECMAScript,由ECMA-262定义,提供核心语言功能;
- 文档对象模型(DOM),提供访问和操作网页内容的方法和接口;
- 浏览器对象模型(BOM),提供与浏览器交互的方法和接口。
第二章 在HTML中使用JavaScript
本章节主要是介绍如何在HTML中使用JavaScript。
小结
我们需要是用<script>
标签来将JavaScript嵌入到HTML页面中,或者引入外部的JavaScript文件。一些注意点:
- 在使用内嵌的JavaScript的时候,不要在任何地方出现
</script>
,可以通过转义字符解决<\/script>
; - HTML是按顺序从上到下解析的,所以
<script>
标签放在<body>
标签内最后的位置,也就是</body>
之前; - 使用defer属性可以让脚本在文档完全呈现后再执行,兼容性问题,不建议使用;
- 使用async属性可以让脚本异步执行,不会等待其他脚本,也不会阻塞文档的呈现,不能保证异步执行的脚本会按顺序执行;
<noscript>
可以使得不支持脚本的浏览器中显示代替的内容;- 外部脚本可被浏览器缓存。
在XHTML中,<
字符被解析为一个新的标签开始,所以JavaScript在XHTML中的使用可以如下:
<script>
//<![CDATA[
var a = 1, b = 2;
if (a < b) {
console.log('true');
}
//]]>
</script>
注释掉CDATA是为了可以兼容不支持XHTML的浏览器。
第三章 基本概念
本章节主要是介绍了JavaScript的语法、数据类型、流控制语句以及函数等基本概念。由于涉及的知识点较多,本文只列举出一些,个人觉得重要的,或是容易遗忘的知识点。
知识点
- ECMAScript中有5中简单的数据类型:undefined、null、boolean、number、string。以及一种复杂的数据类型——Object。
ECMAScript不支持任何创建自定义类型的机制,所有的值最终都是上述6种数据类型之一。
- 转换为false的值:”“(空字符串)、0和NaN、null、undefined。
- JavaScript采用IEEE754格式来表示整数和浮点数值,所以浮点数值的计算会产生误差。
- Infinity是无穷大
- 任何涉及NaN的操作都会返回NaN,且NaN不等于任何数,包括它本身。
- Number(null)返回0,Number(undefined)返回NaN。
- parseInt(“”)返回NaN,而Number(“”)返回0。
- parseInt(666, 10),第二个参数是转换时的基数。
- 除了null和undefined以外,所有的数据类型都有toString()方法。toString()方法可以传入一个参数,表示输出数值的基数。
- Object的每个实例都具有下列属性和方法:constructor、hasOwnProperty(propertyName)、isPrototypeOf(Object)、propertyIsEnumbrable(propertyName)、toLocalString()、toString()、valueOf()。
- 宿主对象(如,window)可能会也可能不会继承Object。
- 一元加操作符对非数值的时候会像Number()转型函数一样,对其转换(如,+ ‘10’会返回整数10)。
- 同时使用两个逻辑非操作符(!!)与Boolean()转换结果相同。
- 逻辑与(&&)和或(||)操作符都是短路操作符,而且在有一个操作数不是布尔值的情况下,不一定返回布尔值。
自己总结一下,逻辑与(&&)的时候,第一个是true或者转化结果为true的时候,返回第二个数。第一个数为null、NaN、undefined的时候,返回null、NaN、undefined。逻辑或(||)的时候,第一个是true或者转化结果为true的时候,返回第一个数,否则返回第二个。
- ECMAScript中不存在块级作用域,因此在循环内部定义的变量在外部也可访问到。
- 建议在使用for-in循环之前,先检测确认该对象的值是不是null或undefined。
- 虽然觉得with的用法很厉害,但是会导致性能下降,所以当然不推荐使用。
- switch语句中可以使用任何数据类型,甚至每个case的值可以是变量或是表达式。
var a = 26;
switch (true) {
case a < 0 : alert('Less than 0'); break;
case a >= 0 && a <= 100: alert('Between 0 and 100'); break;
default: alert('More than 100');
}
上面程序结果是第二个。switch语句在比较值的时候使用的是全等操作符。
传入的参数都存储在类数组对象arguments中,未传入的参数值为undefined。
ECMAScript中的所有参数传递的都是值,不可能通过引用传递参数。