第一章 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); //

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. 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); //

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); //
 ---恢复内容结束---

《Javascript高级程序设计》读书笔记(1-3章)的更多相关文章

  1. Javascript高级程序设计读书笔记(第二章)

    第二章  在HTML中使用Javascript 2.1<script>元素 延迟脚本(defer = "defer")表明脚本在执行时不会影响页面的构造,脚本会被延迟到 ...

  2. javascript高级程序设计读书笔记-事件(一)

    读书笔记,写的很乱   事件处理程序   事件处理程序分为三种: 1.html事件2. DOM0级,3,DOM2级别  没有DOM1 同样的事件 DOM0会顶掉html事件   因为他们都是属性  而 ...

  3. Javascript高级程序设计读书笔记(第六章)

    第6章  面向对象的程序设计 6.2 创建对象 创建某个类的实例,必须使用new操作符调用构造函数会经历以下四个步骤: 创建一个新对象: 将构造函数的作用域赋给新对象: 执行构造函数中的代码: 返回新 ...

  4. JavaScript高级程序设计 读书笔记 第一章

    JavaScript是一种专门为与网页交互而设计的脚本语言 JavaScript实现 ECMAscript---核心 DOM---文档对象模型 BOM---浏览器对象模型

  5. Javascript高级程序设计读书笔记(第10章 DOM)

    第10章 DOM 10.1  节点层次 每个节点都有一个nodeType属性,用于表明节点的类型.任何节点类型必是下面中的一个: Node.Element_NODE(1); NODE.ATTRIBUT ...

  6. Javascript高级程序设计读书笔记(第三章)

    第3章 基本概念 3.4 数据类型 5种简单数据类型:undefined.boolean.number.null.string. typeof操作符,能返回下列某个字符串:“undefined”.“b ...

  7. JavaScript高级程序设计 读书笔记 第二章

    <script>元素 直接在页面中嵌入JavaSript代码或包含外部JavaSript文件. 在代码中任何地方不能出现</script>,可通过转义字符'\'解决. 在XHT ...

  8. javascript高级程序设计读书笔记

    第2章  在html中使用javascript 一般都会把js引用文件放在</body>前面,而不是放在<head>里, 目的是最后读取js文件以提高网页载入速度. 引用js文 ...

  9. JavaScript高级程序设计-读书笔记(7)

    第22章 高级技巧 1.高级函数 (1)安全的类型检测 在任何值上调用Object原生的toString()方法,都会返回一个[object NativeConstructorName]格式的字符串. ...

  10. JavaScript高级程序设计 读书笔记

    第一章 JavaScript 简介 第二章 Html中使用JavaScript 第三章 基本概念 第四章 变量,作用域,内存 第五章 引用类型 第六章 面向对象 第七章 函数表达式 第八章 BOM 第 ...

随机推荐

  1. JavaScript 字符串操作

    JavaScript 字符串用于存储和处理文本.因此在编写 JS 代码之时她总如影随形,在你处理用户的输入数据的时候,在读取或设置 DOM 对象的属性时,在操作 Cookie 时,在转换各种不同 Da ...

  2. 深入理解javascript函数参数与闭包(一)

    在看此文章,希望先阅读关于函数基础内容 函数定义与函数作用域 的章节,因为这篇文章或多或少会涉及函数基础的内容,而基础内容,我放在函数定义函数作用域 章节. 本文直接赘述函数参数与闭包,若涉及相关知识 ...

  3. iOS 3D 之 SceneKit框架Demo分析

    Scene Kit 是Apple 向 OS X 开发者们提供的 Cocoa 下的 3D 渲染框架. Scene Kit 建立在 OpenGL 的基础上,包含了如光照.模型.材质.摄像机等高级引擎特性, ...

  4. iOS 中的 HotFix 方案总结详解

    相信HotFix大家应该都很熟悉了,今天主要对于最近调研的一些方案做一些总结.iOS中的HotFix方案大致可以分为四种: WaxPatch(Alibaba) Dynamic Framework(Ap ...

  5. mysql数据类型

    一.数值类型 Mysql支持所有标准SQL中的数值类型,其中包括严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUB ...

  6. Git命令

    1. 检出项目到本地 git clone git@github.com:michaelliao/gitskills.git 2. 查看当前工作区状态 git status 3. 添加文件或文件夹至版本 ...

  7. zip命令的基本用法

    zip命令的基本用法是: zip [参数] [打包后的文件名] [打包的目录路径] linux zip命令参数列表: -a 将文件转成ASCII模式 -F 尝试修复损坏的压缩文件 -h 显示帮助界面  ...

  8. 项目自动化建构工具gradle 入门0——环境 & 废话

    gradle 是一个项目自动化构建工具.同类的产品还有ant ,maven等等.相比之下我更喜欢gradle,它语法简洁.兼容maven.ide集成很好. 学习使用gradle最快的方式是看文档,而且 ...

  9. Cookie和Session的那些事儿

    Cookie和Session都是为了保持用户的访问状态,一方面为了方便业务实现,另一方面为了简化服务端的程序设计,提高访问性能.Cookie是客户端(也就是浏览器端)的技术,设置了Cookie之后,每 ...

  10. 如何创建一个简单的Visual Studio Code扩展

    注:本文提到的代码示例下载地址>How to create a simple extension for VS Code VS Code 是微软推出的一款轻量级的代码编辑器,免费,开源,支持多种 ...