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 ...
随机推荐
- 如何将自己的windows设置为mysql服务器
1.安装mysql 服务器 2.创建超级用户,即 用户管理 mysql>use mysql; 查看 mysql> select host,user,password from user ; ...
- 一般处理程序上传文件(html表单上传、aspx页面上传)
html 表单上传文件 一般处理程序由于没有 apsx 页面的整个模型和控件的创建周期,而比较有效率.这里写一个用 html 表单进行文件上传的示例. 1. 表单元素选用 ...
- 05:统计单词数【NOIP2011复赛普及组第二题】
05:统计单词数 总时间限制: 1000ms 内存限制: 65536kB 描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次 ...
- PLC数据访问
PLC是很多机床设备上都有的控制中心,和PLC通信是很多做工厂管理系统的必经之路. 一年前有个项目需要和PLC(西门子S200)通信,不仅读取里面的数据,还需要写数据需要控制机床的运行,当时不大了解, ...
- [转]权限问题导致Nginx 403 Forbidden错误的解决方法
权限问题导致Nginx 403 Forbidden错误的解决方法 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-08-22 这篇文章主要介绍了权限问题导致Nginx 403 F ...
- KMPlayer 捆绑商业软件问题以及解决办法
Kmplayer 本来是很好的播放软件,支持的格式很多,特别我要在本地播放flash swf 就用它.昨天下载安装了他们推荐已久的更新之后,莫名帮我安装了几个软件,都是我不能选择的,例如Winzip. ...
- 【Jsch】使用SSH协议连接到远程Shell执行脚本
如果大家熟悉Linux的话,一定对ssh,sftp,scp等命令非常熟悉,ssh是一个安全协议,用来在不同系统或者服务器之间进行安全连接,SSH 在连接和传送的过程中会加密所有的数据. 但是SSH一般 ...
- TIOBE Index for January 2016(转载)
Java has won the TIOBE Index programming language award of the year. This is because Java has the la ...
- jQuery整体架构源码解析(转载)
jQuery整体架构源码解析 最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性, ...
- Arrays和Collection之间的转换
1.将数组转换成固定大小的列表: public static <T> List<T> asList(T... a)参数 T... a:数组元素 返回值 List<T> ...