《Javascript高级程序设计》读书笔记(1-3章)
第一章 JavaScript简介
1.1 JavaScript简史
略
1.2 JavaScript实现
虽然 JavaScript 和 ECMAScript 通常都被人们用来表达相同的含义,但 JavaScript 的含义却比 ECMA-262 中规定的要多得多。一个完整的 JavaScript 实现应该由下列三个不同的部分组成:
核心(ECMAScript)
文档对象模型(DOM)
浏览器对象模型(BOM)
1.3 JavaScript版本
略
第二章 在HTML中使用JavaScript
2.1 <script>元素
向HTML页面中插入JavaScript的主要方法,就是使用<script>元素。
为了避免浏览器在呈现页面时出现明显的延迟,现代Web应用程序一般都把全部JavaScript引用放在<body>元素中页面内容的后面。
2.2 嵌入代码与外部文件
略
2.3 文档模式
两种文档模式是:混杂模式和标准模式
2.4 <noscript>元素
略
第三章 基本概念
3.1 语法
1. 区分大小写:ECMAScript中的一切(变量、函数名和操作符)都区分大小写。
2. 注释:ECMAScript使用C风格的注释,包括单行注释和块级注释。
3. 严格模式:严格模式是为JavaScript定义了一种不同的解析与执行模型。要在整个脚本中启用严格模式,可以在顶部添加如下代码:
"usestrict";
3.2 关键字和保留字
略
3.3 变量
定义变量时要使用var操作符,后跟变量名(即一个标识符),如下所示:
var message;
省略var操作符时,会创建一个全局变量:
function test(){message="hi"; //全局变量 } test(); alert(message); //"hi"
3.4 数据类型
ECMAScript中有5种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和String。还有1种复杂数据类型——Object,Object本质上是由一组无序的名值对组成的。
1. typeof操作符:
typeof是用来检测给定变量的数据类型的一种手段。
2. Undefined类型:
Undefined类型只有一个值,即特殊的undefined。在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。
3. Null类型:
Null类型是第二个只有一个值的数据类型,这个特殊的值是null。如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其他值。
4. Boolean类型:
Boolean类型只有两个字面值:true和false。这两个值与数字值不是一回事,因此true不一定等于1,而false也不一定等于0。
要将一个值转换为其对应的Boolean值,可以调用转型函数Boolean()。
5. Number类型:
ECMAScript能够表示的最小数值保存在Number.MIN_VALUE中——在大多数浏览器中,这个值是5e-324;能够表示的最大数值保存在Number.MAX_VALUE中——在大多数浏览器中,这个值是1.7976931348623157e+308。
NaN是一个特殊的数值,isNaN()函数用于判断一个值是否为数字,例如字符串"10"或Boolean值。而任何不能被转换为数值的值都会导致这个函数返回true。
有3个函数可以把非数值转换为数值:Number()、parseInt()和parseFloat()。第一个函数,即转型函数Number()可以用于任何数据类型,而另两个函数则专门用于把字符串转换成数值。
6. String类型:
String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。ECMAScript中的字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变。
要把一个值转换为一个字符串有两种方式。第一种是使用几乎每个值都有的toString()方法,多数情况下,调用toString()方法不必传递参数。但是,在调用数值的toString()方法时,可以传递一个参数:输出数值的基数。
第二种是使用转型函数String(),这个函数能够将任何类型的值转换为字符串。
7. Object类型:
ECMAScript 中的对象其实就是一组数据和功能的集合。对象可以通过执行 new 操作符后跟要创建的对象类型的名称来创建。如下所示:
var o = new Object();
Object的每个实例都具有下列属性和方法:
constructor:保存着用于创建当前对象的函数。对于前面的例子而言,构造函数(constructor)就是Object()。
hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。
isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型。
propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句来枚举。
toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
toString():返回对象的字符串表示。
valueOf():返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同。
由于在ECMAScript中Object是所有对象的基础,因此所有对象都具有这些基本的属性和方法。
3.5 操作符
1. 如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值。
2. 如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则进行比较;
3. 相等(==)全等(===):全等只在两个操作数未经转换就相等的情况下返回true。
var result1 = ("55" == 55); //true,因为转换后相等 var result2 = ("55" === 55); //false,因为不同的数据类型不相等
4. 条件操作符:
variable = boolean_expression ? true_value : false_value;
5. 赋值操作符:简单的赋值操作符由等于号(=)表示,其作用就是把右侧的值赋给左侧的变量,如下面的例子所示:
var num = 10;
3.6 语句
1. ECMAScript 5中不存在块级作用域,在循环内部定义的变量也可以在外部访问到。
for (var i = 0; i < count; i++){ } alert(i); //10
2. for-in 语句是一种精准的迭代语句,可以用来枚举对象的属性。
下面是一个示例:
for (var propName in window) {document.write(propName); }
3. break 和 continue 语句用于在循环中精确地控制代码的执行。其中,break 语句会立即退出循环,强制继续执行循环后面的语句。而 continue 语句虽然也是立即退出循环,但退出循环后会从循环的顶部继续执行。
var num = 0; for (var i=1; i < 10; i++) { if (i % 5 == 0) {break;}num++; } alert(num); //4
4. break 和 continue 语句都可以与 label 语句联合使用,从而返回代码中特定的位置。这种联合使用的情况多发生在循环嵌套的情况下,如下面的例子所示:
var num = 0; outermost:for (var i = 0; i < 10; i++) {for (var j = 0; j < 10; j++) {if (i == 5 && j == 5) {break outermost;}num++;}} alert(num); //55
5.
6.
7.
3.7 函数
参数:
ECMAScript 中的参数在内部是用一个数组来表示的。函数接收到的始终都是这个数组,而不关心数组中包含哪些参数,在函数体内可以通过 arguments 对象来访问这个参数数组,从而获取传递给函数的每一个参数。
arguments 对象只是与数组类似(它并不是 Array 的实例),因为可以使用方括号语法访问它的每一个元素(即第一个元素是 arguments[0],第二个元素是 argumetns[1],以此类推),使用 length 属性来确定传递进来多少个参数。
重载:
ECMAScript 函数不能像传统意义上那样实现重载。如果在 ECMAScript中定义了两个名字相同的函数,则该名字只属于后定义的函数。
function addSomeNumber(num){return num + 100; } function addSomeNumber(num) {return num + 200; } var result = addSomeNumber(100); //300
转载于:https://www.cnblogs.com/tgxh/p/6143075.html
《Javascript高级程序设计》读书笔记(1-3章)相关推荐
- JavaScript高级程序设计读书笔记(第5章引用类型之Array类型)
为什么80%的码农都做不了架构师?>>> 1.数组长度 //lenth会自动更新 var arr=["black","red","g ...
- JavaScript高级程序设计读书笔记(第8章BOM之location对象查询字符串参数)
为什么80%的码农都做不了架构师?>>> location对象查询字符串参数 //location.search返回从问号到URL末尾的所有内容function getQuerySt ...
- JavaScript高级程序设计读书笔记(第6章面向对象的程序设计之创建对象)
2019独角兽企业重金招聘Python工程师标准>>> 面向对象语言都有"类"的概念,而通过类可以创建任意多个具有相同属性和方法的对象. JS中没有"类 ...
- javascript高级程序设计 学习笔记 第五章 上
第五章 引用类型的值(对象)是引用类型的一个实例.在 ECMAScript 中,引用类型是一种数据结构, 用于将数据和功能组织在一起.它也常被称为类,但这种称呼并不妥当.尽管 ECMAScri ...
- JavaScript高级程序设计-读书笔记(6)
第20章 JSON JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量 JSON的语法可以表示一下三种类型的值 l 简单值:使用与JavaScript相同的语法,可以在JS ...
- 《JavaScript 高级程序设计》笔记 第7章及以后
第7章 函数表达式 匿名函数的name属性是空字符串: 闭包是函数:闭包是有权访问另一个函数作用域中变量的函数:(P181 副作用,解释了点击li弹出循环最后值的原因) 当某个函数第一次被调用时,会创 ...
- 重学《JavaScript 高级程序设计》笔记 第6章对象
第6章 面向对象的程序设计 ECMAScript中没有类的概念: 1.创建对象-历史 1.1 创建实例,添加方法和属性 → 对象字面量 缺点: 使用同一接口创建很多对象,产生大量重复代码 var pe ...
- JavaScript高级程序设计读书笔记(一)
第一章 总结: JavaScript是一种专为与网页交互设计的脚本语言. 由三个不同的部分组成: ECMAScript, 由ECMA-262定义,提供核心语言功能: DOM(文件对象模型),提供访问和 ...
- JS高级程序设计读书笔记 (第九章 客户端检测)
第九章 客户端检测 能力检测 最常用也最为人们广泛接受的客户端检测形式是能力检测(又称特性检测).能力检测的目标不是识别特定的浏览器,而是识别浏览器的能力.采用这种方式不必顾及特定的浏览器如何如何,只 ...
- javascript高级程序设计读书笔记2
<!DOCTYPE HTML>//这个网页的文档类型,这个是html5的写法 Bootstrap使用的某些HTML元素和CSS属性需要文档类型为HTML5 doctype.因此这一文档类型 ...
最新文章
- 屏蔽Drupal中的“Notice: Undefined index”警告
- 前沿研究丨基于驾驶脑的智能驾驶车辆硬件平台架构
- 使用阿里云docker加速器
- java的方法调用中分不清_java中不太清晰的知识点
- 数据库事务、存储过程、函数以及触发器之间的区别和联系
- vue tree组件_使用Vue 3.0做JSX(TSX)风格的组件开发
- python `__repr__`
- xamarin UWP ActivityIndicator
- [Everyday Mathematics]20150112
- mysql 存储过程 if !=_mysql 存储过程 if !=
- wps怎么把xlsx转成html,怎样把wps转换成excel
- om.sun.faces.mgbean.ManagedBeanCreationException: 对受管 bean xxx执行资源注入 (resource injection
- mixly for linux64,Mixly编程for Linux
- 大事•Pandownload凉了
- 瑞士军刀1- 剪贴板堆工具-CLCL介绍
- Python数字图像处理---1.1图像的像素格式与图像读写
- 【自动化】车间自动化十大必备装置!
- DFS(剪枝与优化) - 洛谷 P1361 - 小猫爬山
- android友盟自定义事件,友盟:自定义事件
- 聚观早报 | 苹果首款头显明年1月亮相;米哈游投资信托「打水漂」
热门文章
- 百度百科做起来也不难
- c# windows服务状态、启动和停止服务
- C++ STL学习笔记(5) Vector容器, array容器,deque容器
- 数字特征值 中国大学生mooc 翁恺 C语言
- c语言网络定向拉取数据,用C模拟了一个http请求,但是recv函数接收的数据不完整且欠安顺序获取信息...
- java实现折半查找_java语言之实现折半查找算法
- python 3.5.2页面_笔者操作win10系统搭建Python 3.5.2开发环境的详细方案
- 翁恺老师C语言学习笔记(十)指针_指针与数组
- AMBERT!超越BERT!多粒度token预训练语言模型
- Delphi编译指令了解学习