JavaScript学习笔记(第一章——第三章)

说明

参考资料:《JavaScript高级程序设计(第3版)》

笔记主要为《JavaScript高级程序设计(第3版)》读书记录,按照此书的章节学习记录。方便以后查询复习(PS:正版书99大洋,没舍得买。在淘宝46买了一本盗版的并带一本 《JavaScript DOM编程艺术(第2版)》)。两本书同时阅读,但以《JavaScript高级程序设计(第3版)》为主要学习路线。重要说明性内容将以近似书中原文摘出(以免出现个人解释歧义),外加自己遇到特殊情况说明(不一定完全正确)

第一章:JavaScript简介

JavaScript诞生于1995年。原名为LiveScript,为了追赶Java语言的热潮改名为JavaScript,实际上两者本无半毛钱的关系。

虽然JavaScript和ECMAScript通常都被人们用来表达相同的含义,但JavaScript的含义却比ECMA-262中规定的要多的多。一个完整的JavaScript实现应该由下列三个不同的部分组成。

核心(ECMAScript

                   文档对象模型(DOM

                   浏览器对象模型(BOM

 

 

第二章:在HTML中使用JavaScript

向HTML页面中插入JavaScript的主要方法,就是使用<script>元素。

建议使用外部文件引入JavaScript,并建议内部的JavaScript写在HTML的底部

当浏览器不支持JavaScript或者脚本被禁用的时候可以使用<noscript>标签,仅当上述两者其一存在的时候显示标签中的内容。其他情况不会显示此标签。例如:

<noscript>

<p>您当前浏览器不支持JavaScript或脚本被禁用!</p>

</noscript>

第三章:基本概念

注:JavaScript区分大小写

 

         语法:JavaScript的语法大量借鉴了C及其他类C语言(如Java和Perl)的语法。

标识符:是指变量、函数属性的名称,或者函数的参数。标识符可以是按照下列规则组合起来的一或多个字符:

1、  第一个字符必须是一个字母、下划线(_)或一个美元符号($);

2、  其他字符可以是字母、下划线或美元符号或数字。

注释:单行注释(// 注释内容)

块注释(/*

*  多行注释

*/)

语句:以一个分号(;)结尾,如果省略分号,则由解释器确定语句的结尾(PS:尽量不要这么些)

关键字和保留字(带*号上标的是第5版新增的关键字):

        

         关键字:

break             do             instanceof             typeof

case              else                          new                                     var

catch                             finally                      return                                 void

continue                       for                           switch                                  while

debugger*                   function                 this                                                 with

default                          if                              throw

delete                           in                             try

保留字

abstract           enum                      int                                        short

boolean                        export                    interface                             static

byte                               extends                  long                                      super

char                               final                         native                                   synchronized

class                                       float                        package                               throws

const                             goto                        private                                 transient

debugger                     implements          protected                            transient

double                         import                    public

变量:JavaScript的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。定义变量时要使用var 操作符,后跟变量名。例如:

var msg = “Hello World”;

全局变量与局部变量:用var 操作符定义的变量将成为定义该变量的作用于中的局部变量。也就是说,如果在函数中使用var 定义一个变量,那么这个变量在函数退出后就会被销毁,例如:

function test(){

var msg = “hi”;         // 局部变量

}

test();

alert(msg);       // 错误!

但是在test函数中不用var 声明msg变量,此时msg就变成了全局变量(msg = “hi”;     // 全局变量)。

注:for循环中声明的变量特殊。例如:

for(var i=0;i<10;i++){

// do someing

}

alert(“i=”+i);    // 此时会输出”i=10”

数据类型:5中简单数据类型(基本数据类型):Undefined、Null、Boolean、Number和String。还有一种复杂的数据类型——Object。Object本质是由一组无序的名值对组成的。

typeof操作符:使用它可能返回下列某个字符串:

“undefined”——如果这个值未定义

“boolean”——如果这个值是布尔值

“string”——如果这个值是字符串

“number”——如果这个值是数值

“object”——如果这个值是对象或null

“function”——如果这个值是函数

Undefined和Null类型:

var message;

alert(message);       // 输出undefined

比较Undefined与Null类型

alert(undefined == null);           // 则会输出true

alert(undefined === null);                  // 则会输出false

Boolean类型:只有true与false两个值(且只有全小写为Boolean)

用Boolean强制转换(Boolean(your type)):

数据类型                           转换为true的值                              转换为false的值

Boolean                               true                                                         false

String                                    任何非空字符串                                 空字符串(””)

Number                               任何非零数字值(包括无穷大) 0和NaN

Object                                  任何对象                                               null

Undefined                           n/a                                                           undefined

(PS:n/a(或N/A),是not applicable的缩写,意思为“不适用”。)

Number类型:可以声明为八进制(以8为基数)或十六进制(以16为基数)和十进制。八进制必须以0开头且数字序列为0-7。十六进制以0x开头且数字序列为0-9或A-F

浮点数:计算精度可以精确到小数点后17位,但是进行算数计算时其精确度远远不如整数。例如:

0.1+0.2不等于0.3。而是等于0.30000000000000004

负无穷:5e-324(Number.MIN_VALUE)

正无穷:1.7976931348623157e+308(Number.MAX_VALUE)

判断是否为无穷数:isFinite()

NaN:非数值

任何设计NaN操作都会返回NaN(例如:NaN/10返回NaN)

NaN不等于任何数值,包括本身

判断是否为数值:isNaN()

正数/0返回Infinty(正无穷)

负数/0返回-Infinty(负无穷)

0/0返回NaN

转换为数值类型:Number()、parseInt()、parseFloat()

Number()可以用来任何数据类型,而后两者主要用于字符串

Number()转换规则:

         如果是Boolean值,true和false将分别转换为1和0

如果是数字值,只是简单的传入和返回

如果是null值,返回0

如果是undefined,返回NaN

如果是””返回0,其他字符串遵循强类型语言规则(略)

parseInt()转换:

如果是””返回NaN

如果是”123abc123”返回123(PS:字符串以次解析,直到完成,非数值会被忽略)

如果是”12.3”返回12

如果是转换8进制,需要提供第二个参数,例如:parseInt(“070”,8);返回56

         parseFloat与上类似

 

         String类型:

单引号或双引号包裹。

         转义字符:  

\n               换行

\t               制表

\b               空格

\r               回车

\f                进纸

\\               斜杠

\’                单引号

\”               双引号

         数学函数:

Math.ceil(number):把浮点数number向”大于”方向舍入为与之最接近的整数

Math.floor(number):把浮点数number向”小于”方向舍入为与之最接近的整数

Math.round(number):把浮点数number四舍五入为最近接的整数

时间戳(2015-06-08 21:41)

PS:从上个时间戳至此阅了一遍《JavaScript DOM编程艺术(第二版)》感觉写的比较水、而且内容异常的少。看来本人喜欢买厚的书还是有一定“科(gou)学(pi)”依据的。

         循环语句:

1、  do-while语句:是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试出口条件。(至少执行以次循环体语句)


do{

statement

}while(expression);

2、  while语句:属于前测试循环语句。


var i = 0;

while(i < 10){

i++;

}

3、  for语句:是一种前测试循环语句,但它具有在执行循环之前初始化变量和定义循环后要执行的代码的能力。


for(var i = 0; i < 10 ; i++){

alert(i);

}

注:无限循环


for(;;){    // 无限循环

doSomething();

}

4、  for-in语句:是一种精准的迭代语句,可以用来枚举对象的属性。


for(var propName in window){

document.write(propName);

}

注:当迭代的对象的变量值为null或者undefined时,for-in语句会抛出错误。可以通过try-catch(e)捕获

        

break和continue语句:

                   break:立即跳出循环体,退出循环。

continue:立即退出本次循环并进入下一次循环。

         with语句:

作用是将代码的作用域设置到一个特定的对象中。

例:


var qs = location.search.substring(1);

var hostname = location.hostname;

var url = location.href;

with缩减后:


with(location){

var qs = search.substring(1);

var hostname = hostname;

var url = href;

}

注:大量使用with会导致性能下降

         switch语句:


switch(expression){

case value : statement

break;

case value : statement

break;

default: statement

}

注:等同于多个if-else

 

         函数:

声明:


function functionName(arg0,arg1,…,argN){

statements

}

         理解参数:

ECMAScript函数不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型。也就是说,即便你定义的函数只接收两个参数,在调用的这个函数时也未必一定要传递两个参数。之所以这样子,是因为ECMAScript中的参数在内部是用一个数组来表示的。函数接收到的永远都是这个数组,而不关心数组中包含哪些参数。实际上在函数体内可以通过arguments对象来访问这个数组,从而获取传递给函数的每一个参数。arguments对象只是与数据类似(它并不是Array的实例),因为可以使用方括号语法访问它的每一个元素(即第一个元素是arguments[0])

时间: 2024-08-22 19:17:15

JavaScript学习笔记(第一章——第三章)的相关文章

JavaScript学习笔记第一天——字符串连接的N种方法

Javascript 字符串的连接方法有多种,但效率却有很大区别. 1.逐个字符串相加 var arr = ['item 1', 'item 2', 'item 3', ...]; var list = ''; for (var i = 0, l = arr.length; i < l; i++) { list += '<li>' + arr[i] + '</li>'; } list = '<ul>' + list + '</ul>'; 这种最常见的,

课本学习笔记4:第三章 20135115臧文君

第三章 进程管理 注:作者:臧文君,原创作品转载请注明出处. 一.进程 1.进程管理是所有操作系统的心脏所在. 2.进程:是处于执行期的程序以及相关的资源的总称,实际上,进程就是正在执行的程序代码的实时结果. 3.执行线程:简称线程thread,是在进程中活动的对象. 4.内核调度的对象是线程,而不是进程. 5.对Linux而言,线程是一种特殊的进程. 6.进程提供两种虚拟机制:虚拟处理器和虚拟内存. 同一个进程中的线程之间可以共享虚拟内存,但每个都拥有各自的虚拟处理器. 7.Linux系统中,

Accelerated C++ 学习笔记及题解----第三章

本章主要内容 1.类型定义typedef 2.局部变量 3.格式化输出初涉 4.向量vector及基本方法 本章主要程序代码 1.计算平均成绩 #include <iomanip> #include <iostream> #include <string> using namespace std; int main() { // ask for and read the student's name cout << "Please enter yo

javascript学习笔记第一周Array

Javascript第一周 Array数组 创建数组 自定义方式和实例化方式 使用数组 1. join() join方法是将数组中的元素连接成字符串.参数可选.参数即是连接符.为空时,参数为逗号. 2.reverse() reverse方法是将数组里的元素的顺序全部颠倒,逆序排列. 3.sort() sort方法,是将数组中的元素排序.默认无参时按ascii增序排列.可以一个参数.该参数是一个比较函数,比较函数有两个参数. 4.concat() 将数组和参数合并成一个新数组并返回.参数可以是单个

javascript学习笔记第一周DOM

Javascript第一周 DOM基础 DOM (Document Object Model) 即文档对象模型 DOM 有三个等级,分别是 DOM1.DOM2.DOM3. 获取DOM元素的方法根据W3C标准有以下几种: 1.getElementById() getElementById()方法,接受一个参数:获取元素的 ID.如果找到相应的元素则返回该元素的 HTML 对象,如果不存在,则返回 null. 2.getElementsByTagName() getElementsByTagName

javascript学习笔记第一周Math

Javascript第一周 Math常用的方法 1.parseInt() 取整:把字符串最前边的整数取出来并返回 2.Math.ceil() 向上取整:有小数就整数部分加1 3.Math.round() 四舍五入 4.Math.floor() 向下取整 5.Math.abs() 返回数的绝对值 Math的方法 Math.abs():计算绝对值. Math.acos():计算反余弦值. Math.asin():计算反正弦值. Math.atan():计算反正切值. Math.atan2():计算从

DirectX 11游戏编程学习笔记之7: 第6章Drawing in Direct3D(在Direct3D中绘制)(重点回顾+勘误)

        本文由哈利_蜘蛛侠原创,转载请注明出处!有问题欢迎联系[email protected]         注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候,会使用章节号而非页码.同样的情况适合于"龙书"第二版. 上一期的地址: DX 11游戏编程学习笔记之6 这一章应该是本书最长的一章了,可能也是最难的一章,所以大家一定要好好消化,仔细学习!这一章大致相当于"龙书"第二版的第7章和第8章,还添加了一些别的东西. 由于这一

《javascript高级程序设计》第二、三章知识点整理

第二章知识点总结 1.<script>在html中的使用 主要功能:在页面中嵌入javascript代码或包含外部javascript文件. 常用属性: type:用于定义脚步代码的语言类型,默认为text/javascript. src:包含外部域的javascript文件. defer:表示脚本会在整个页面加载完毕之后运行,只对外部文件有效,最好只包含一个延迟脚本. async:脚本在不妨碍其他操作的情况下立即下载(不保证下载文件的顺序). 插入位置:在页面<body>标签页面

《python基础教程(第二版)》学习笔记 字符串(第3章)

<python基础教程(第二版)>学习笔记 字符串(第3章)所有的基本的序列操作(索引,分片,乘法,判断成员资格,求长度,求最大最小值)对字符串也适用.字符串是不可以改变的:%左侧是格式字符串,右侧是需要格式化的值print '%s=%d' % ('x',100) ==> x=100%% 格式字符串中出现 %模板字符串:from string import Templates=Template('$x is 100');  s.substitute(x='ABC');  ==> '