1 《JavaScript高级程序设计》学习笔记(1)
欢迎关注本人的微信公众号“前端小填填”,专注前端技术的基础和项目开发的学习。

首先,我将从《JavaScript高级程序设计》这本JavaScript学习者必看的经典教程开始,JavaScript的很多语法规则及习惯用法和Java极其相似,因此对于有Java基础的学习者来说,JS是很容易上手的。该系列的每次更新将对应原书的一章内容,本次更新对应原书的第三章,主要是一些基本概念,内容很简单, 知识点也较少。
1、和一般的编程语言一样,标识符可以由字母、数字、下划线和美元符组成,但是不能以数字开头。在JS中,标识符是区分大小写。当然,标识符不能是关键字和保留字。
2、JS中的注释和java一样,有三种注释,分别是单行注释(// 双斜线表示单行注释)、块级注释(/* 这里是块级注释 */)、文档注释(/** 这里是文档注释 */)。
3、严格模式:ECMAScript 5 引入了严格模式的概念, 是为JS定义的一种不同的解析与执行模型。严格模式在后续的学习中会被经常提及。要在整个脚本中启用严格模式,只需要在顶部添加如下代码即可,也可以在函数内部的第一行加上如下代码表示指定函数使用严格模式。
"use strict";
4、JS的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。用关键字var来声明,不需要指定数据的具体类型。在严格模式下,不能定义名为eval或arguments的变量,否则会导致语法错误。
5、JS中有5种简单数据类型(也称基本数据类型)和1种复杂数据类型。简单数据类型分别是Undefined、Null、Boolean、Number和String,复杂数据类型是Object,Object本质是一组无序的名值对组成的。
Object类型:即对象,就是一组数据和功能的集合,可以通过new操作符来创建。和Java中的Object类一样,Object类型是所有对象类型的父类,即Object类型所具有的任何属性和方法也同样存在于更具体的对象中。
Undefined类型:只有一个值,即undefined,使用var声明变量,但是未对初始化的,这个变量就是Undefined类型的。注意:var i;与var i = undefined;这两句是等价的。
Null类型:只有一个值:null。null表示一个空对象的指针。
String类型:字符串。
Boolean类型:只有两个字面量true和false。但是js中所有的变量都可以使用Boolean()函数将其他数据类型转换成一个Boolean类型的值。
在转换过程中,Boolean类型的false、String类型的空串、Number类型的0和NaN、Undefined类型的undifined将转化为false,其他情况将转化为true。
Number类型:整数和浮点数。js中所有的变量都可以使用Number()函数将其他数据类型转换成一个Number类型的值。
Number()函数的转换规则:true--1,false--0,null--0,undefined--NaN,空字符串--0,其他字符串如果能转换为数字则返回对应的数字(可以识别十六进制),如果不能则返回NaN。NaN:Not a Number。这个数值用于本来要返回一个数值,但是却未能放回一个数值的情况,以防止报错。例如:1/0 返回的就是NaN。NaN的特点:1、任何涉及NaN的操作都会返回NaN。2、NaN对任何值都不相等,包括自己NaN本身。针对NaN特性,JS内置了isNaN()函数,来确定数值是不是NaN类型。
Infinity:正无穷
-Infinity:负无穷(就是在Infinity前加一个负号)
6、typeof操作符:对一个变量进行判断变量的类型,可能返回以下字符串:
"undefined" 如果这个值未定义或者未初始化
"boolean" 如果这个值是布尔值
"string" 如果这个值是字符串
"number" 如果这个值是数值
"object" 如果这个值是对象或null
"function" 如果这个值是函数
具体用法:typeof 95; 或者 typeof(95); 会返回"number"。
7、JS中的操作符:由于JS中的变量是松散类型的,所以在各种操作符之间存在前后两个操作数的类型不一样的情况,所以这一部分的内容比较复杂,也存在各种情况。在这里将简单介绍一下各种操作符。后续将专门写一篇文章来详细介绍这一部分。
一元操作符:自增(++)、自减(--),可应用于整数和浮点数,对于其他类型,先转化为Number类型再进行相关操作,返回对应的数值或NaN、undefined。注意自增、自减操作符在变量的前后不同对赋值结果是有影响的。
位操作符:位与(&)、位或(|)、按位非(~)、位异或(^)、左移(<<)、有符号右移(>>)、无符号右移(>>>)(高位以0填充)。
逻辑运算符:非(!)、与(&&)、或(||)。
关系运算符:大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(!=)、全等(===)、不全等(!==)。若两个操作数均为字符串,则比较两个字符串对应的字符编码,一般是先转化为数值型,然后进行比较。
表达式 值 表达式 值 null == undefined true true == 1 true null === undefined false true == 2 false 5 == NaN false undefined == 0 false NaN == NaN false null == 0 false "NaN" != NaN true "5" == 5 true "NaN" == NaN false false == 0 true
条件运算符:? : 。
赋值运算符:=、+=、-=、*=、/=、%=、<<=、>>=、>>>=。
逗号运算符:可用于声明多个变量,也可用于赋值。用于赋值时,逗号运算符总返回表达式中的最后一项。
8、JS中的各种语句和其他各种编程语言中的都是一样的。主要是顺序、选择和循环三类。
顺序语句:with(expression) statement 将代码的作用于设置到一个特定的对象中,相当于一种简写形式。例如我们需要用到对象a的两个方法getName()和getAge()需要写代码为
var name = a.getName();
var age = a.getAge();
此时用with语句可以写成
with(a){var name = getName();
var age = getAge();
}
选择语句:if、if...else...、switch...case...。
循环语句:do...while、while、for、for...in。
for...in:是一种精准的迭代语句,可以用来枚举对象的属性。
for(var propName in window){document.write(propName);
}
其他语句:break、continue、label。
label:标签语句,可用于被break和continue引用。
1 《JavaScript高级程序设计》学习笔记(1)的更多相关文章
- JavaScript高级程序设计---学习笔记(一)
今天,2017.3.17开始利用课余时间仔细学习<JavaScript高级程序设计>,将需要掌握的知识点记录下来,争取把书里的所有代码敲一遍并掌握. 1.标识符命名最好是第一个字母小写,剩 ...
- javascript高级程序设计学习笔记
javascript高级程序设计,当枕头书已经好久了~zz 现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...
- javascript 高级程序设计 学习笔记
<!--<script> // 异步请求封装 IE6即以上浏览器 // ajax(url,fnSucc,selectID,fnFaild) //url 请求地址 //fnSucc 异 ...
- JavaScript高级程序设计---学习笔记(二)
面向对象程序设计1.属性类型.定义多属性.读取属性特性对象的属性在创建时都带有一些特征值,JavaScript通过这些特征值来定义它们的行为.这些特性是为了实现JavaScript引擎用的,因此不能直 ...
- JavaScript高级程序设计学习笔记--面向对象的程序设计(二)-- 继承
相关文章: 面向对象的程序设计(一) — 创建对象 http://www.cnblogs.com/blackwood/archive/2013/04/24/3039523.html 继承 继承是OO语 ...
- JavaScript高级程序设计学习笔记第一章
作为学习javascript的小白,为了督促自己读书,写下自己在读书时的提炼的关键点. 第一章: 1.JavaScript简史:Netscape Navigator中的JavaScript与Inter ...
- JavaScript高级程序设计学习笔记之事件
1.事件流 事件流描述的是从页面中接收事件的顺序. 事件冒泡 IE的事件流叫做事件冒泡(event bubbling),即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播 ...
- 事件流之事件冒泡与事件捕获<JavaScript高级程序设计>学习笔记
1.事件流 浏览器开发团队遇到一个很有意思问题:页面的那一部分会拥有特定的事件? 对于理解这个问题您可以想象画在一张纸上的一组同心圆,如果你把手指放在圆心上,那么你的手指指向的其实不是一个圆,而是纸上 ...
- JavaScript高级程序设计学习笔记--高级技巧
惰性载入函数 因为浏览器之间行为的差异,多数JavaScript代码包含了大量的if语句,将执行引导到正确的代码中,看看下面来自上一章的createXHR()函数. function createXH ...
- JavaScript高级程序设计学习笔记--错误处理与调试
try-catch语句 只要代码中包含finally子句,则无论try或catch语句块中包含什么代码--甚至return语句,都不会阻止finally子句的执行,来看下面这个函数: function ...
随机推荐
- .lib文件 .h文件 .dll文件
.lib代表的是静态数据连接库,在windows系统中起到链接程序和函数的作用,存放的是函数的是函数调用的信息,是obj文件的集合.相当于linux中的.a或.0. .so文件.lib文件是不对外公开 ...
- CentOS上安装软件错误提示:configure: error: no acceptable C compiler found in $PATH
CentOS上安装软件错误提示:configure: error: no acceptable C compiler found in $PATH 因为是centos linux,默认可以采用yum方 ...
- Contiki学习笔记 第一个程序:Hello World
想来想去,还是得先写一个程序,找下感觉,增强一下自信心,那就国际惯例Hello World吧.先到这个网址下一个Instant Contiki 2.7.之所以没用3.0的,是因为有些问题,我源码是下的 ...
- go异常处理
go的异常处理通过defer,panic,recover这3个流程来达到(defer是关键字,后2者是函数) (1)异常的捕获通常放在函数最末,也就是defer里面 (2)panci抛出异常 (3)r ...
- python小知识点
问题:求列表中每个元素的元素次方之和>>> a=[1,2,3,4]>>> k=len(a)第一种解法# s=0# for x in a:# ...
- D3树状图给指定特性的边特别显示颜色
D3作为前端图形显示的利器,功能之强,对底层技术细节要求相对比较多. 有一点,就是要理解其基本的数据和节点的匹配规则架构,即enter,update和exit原理,我前面的D3基础篇中有介绍过,不明白 ...
- lumen 构建api(dingo api)
什么是 API API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力, ...
- android的一些关键词
- JVM 垃圾回收器工作原理及使用实例介绍
IBM介绍文档:https://www.ibm.com/developerworks/cn/java/j-lo-JVMGarbageCollection/ Java 的新生代串行垃圾回收器中使用了复制 ...
- Windows Server 2008配置服务器证书[转载]
备忘 http://wangchunhai.blog.51cto.com/225186/139451