Javascript高级程序设计(书中总结)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript高级程序设计(书中总结)相关的知识,希望对你有一定的参考价值。

注:本文属于个人总结,知识点说的不全、不对的地方,还望见谅。(我会在日后修改,补正)

本书:js的简介以及在html中的使用就略过。(直奔基础语法,期间还有滤过部分)

第三章:基本概念:

1.js中的一切(变量、函数名和操作符)都区分大小写;

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

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

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

3.语句:

   var sum = a + b      // 即使没有分号也是有效的语句——不推荐

   var diff = a - b;       // 有效的语句——推荐

4.变量:js 的变量是松散类型的,可以用来保存任何类型的数据。定义变量时要使用 var 操作符(注意 var 是一个关键 字),后跟变量名(即一个标识符)

   如:var message;     //这个变量没有初始化,其值为undefined

         var message = "h1";  //js支持直接初始化变量

5.数据类型:5种:Number string boolean null undefined   typeof 用来检测类型

6.(一)undefined:在使用var声明变量未对其初始化时,值为undefined  (注:未初始化出现的undefined;变量未声明也会产生undefined)

   (二)null 空;如果定义的变量准备用于保存对象,那么变量的值可以设置为null

   (三)Boolean的两个字面值:true false; (注:是区分大小写的)对象用于将非逻辑值转换为逻辑值;调用Boolean()函数可以返回一个Boolean的值

           其他数据类型转换为boolean值规则:任何非0数字,任何非空字符串,任何对象、不适用  即为true; 反之为false;

    (四)number类型:整数()和浮点类型(数值必须包含一个小数点,并且小数点后面必须有至少一位数字;浮点数值本身是整数或者小数点后面没有数值,即转为整数)

    (五)NaN即非数值:任何涉及NaN的操作都会返回NaN, isNan() 来确定是否不是数值

    (六)数值转换:Number()  parseInt()  parseFloat()  这三个函数可以把非数值转换为数值

           值的几种情况: (1)Boolean 返回:true 1  ,  false  2; (2)数值,简单的传入或返回 ; (3)null  返回 0;(4)undefined  返回NaN

                                (5)字符串:当字符串中只包含数字的时,前导0忽略,转换为十进制数值;当字符串中包含有效的浮点格式的时,前导0忽略,转换为对应的浮点数值;当字符串为空,不包含任何字符时,转换为0;当字符串中包含除上述格式之外的字符,转换为NaN;当字符串中包含有效的十六进制格式时,转换为相同大小的十进制数值;

                                (6)对象:调用对象的valueof()方法,依照上面的规则转换返回的值,如果转换返回的值为NaN,则调用toString()方法,再次依照前面的规则转换返回的字符串值

    (七)String类型:由零或多个 16位 Unicode字符组成的字符序列,即,字符串  (注:字符串可以由双 引号(")或单引号(‘)表示,但以双引号开头的字符串也必须以双引号结尾,以单引号开头的字符串必须以单引号结尾。

           (1)字符串字面量:\n 换行

                                      \t 制表

                                      \b 空格

                                      \r 回车

                                      \f 进纸

                                      \\ 斜杠

                                      \‘ 单引号(‘),在用单引号表示的字符串中使用。例如:‘He said, \‘hey.\‘‘

                                      \" 双引号("),在用双引号表示的字符串中使用。例如:"He said, \"hey.\""

                                      \xnn 以十六进制代码nn表示的一个字符(其中n为0~F)。例如,\x41表示"A"

                                      \unnnn 以十六进制代码nnnn表示的一个Unicode字符(其中n为0~F)。例如,\u03a3表示希腊字符Σ

          (2)字符串的特点:js中的字符串是不可变的,字符串一旦创建,它们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量

          (3)把一个值转换为字符串的两种方式:toString()  数值、布尔值、对象和字符串值都拥有这个方法,但undefined、null没有这个方法

                                                              String()      在不知道要转换的值是不是 null 或 undefined 的情况下,还可以使用转型函

    (八)Object:构造函数、普通函数:

             Object() 参数:将会根据参数value的数据类型,返回对应类型的对象;Object()的返回值:返回一个与给定值对应类型的对象。该对象包装了给定的参数。

7.操作符:(1)一元操作符 :只能操作一个值的操作符  (递增或递减)

              (2)一元加操作符,一元减操作符 

              (3)布尔操作符:  && 与  ;|| 或 ; ! 非 

              (4)乘性操作符:乘法、除法和求模 ;加性操作符:加法和减法

              (5)关系操作符 小于(<)、大于(>)、小于等于(<=)和大于等于(>=)

              (6)相等操作符:== 相等;  != 不相等; === 全等 ; !== 不全等

              (7)赋值操作符: 乘/赋值(*=);

                                       除/赋值(/=);

                                       模/赋值(%=);

                                       加/赋值(+=);

                                       减/赋值(?=);

                                       左移/赋值(<<=);

                                       有符号右移/赋值(>>=); 

                                       无符号右移/赋值(>>>=)

8.语句:(1)if语句:用于逻辑判断  (2)for语句;具有在执行循环之前初始化变量和定义循环后要执行的代 码的能力。

9.函数:js中的函数使用 function 关键字来声明,后跟一组参数以及函数体;通过函数可以封装任意多条语句,而且可以在任何地方、 任何时候调用执行。

10.理解参数:js的函数不介意传递进来多少个参数,也不在乎传进来参数是什么数据类型。即便你定义的函数只接收两个参数, 在调用这个函数时也未必一定要传递两个参数。可以传递一个、三个甚至不传递参数;js中的参数在内部是用一个数组来表示的;在函数体内可以通过 arguments 对象来访问这个参数数组,从而获取传递给函数的每一个参数。 arguments 对象只是与数组类似(它并不是 Array 的实例),可以通过方括号访问它的每一个元素;通过访问 arguments 对象的 length 属性可以获知有多少个参数传递给了函数。

第四章:执行环境及作用域内存问题 (能力有限,执行环境及作用域部分略过,在日后能更加理解,再做补充。)

1.js 的变量为松散类型的,它只是在特定时间用于保存特定值的一个名字而已;不用在定义某个变量时必须要保存何种数据类型的值,变量的值及其数据类型可以在脚本的生命周期内改变。

2.基本类型和引用类型的值:基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象。 

 (1)基本数据类型:Undefined、Null、Boolean、Number 和 String

 (2)引用类型的值:(object) 是保存在内存中的对象(js不允许直接访问内存中的位置, 也就是不能直接操作对象的内存空间;在操作对象时,实际上是在操作对象的引用而不是实际的对象。 为此,引用类型的值是按引用访问的)

 (3)动态的属性 :基本类型,创建的动态的属性,互不影响;引用类型,创建的动态属性修改,互相影响

 (4)存变量:基本类型,存变量,各是各的,不影响;引用类型的指向是一个,修改会影响

 (5)传递参数:按基本类型传递无论是值还是对象,都不会改变;按引用类型传递,其值会被改变

 (6)typeof:检测一个变量是不是基本数据类型;instanceof 判断是不是引用类型。

以上是关于Javascript高级程序设计(书中总结)的主要内容,如果未能解决你的问题,请参考以下文章

《JavaScript高级程序设计(第二版)》学习函数表达式

JavaScript高级程序设计(第3版)| 学习笔记: 在HTML中使用JavaScript

javascript 执行环境,变量对象,作用域链

javascript DOM中的节点层次和节点类型概述

高级C和C++编译:无法编译书中提到的示例程序。

《javascript高级程序设计(第二版)》学习原型与继承