JavaScript高级程序设计(第3版) 第三章 (基本概念)

3.1 语法

  1.不以数字开头的数字,字母,下划线,美元符号

  2.注释:html <!-- --> css/**/ js单行// 多行/**/

3.ES5 引入了严格模式(strict mode)。即为js定义的一种不同的解析与执行模型。 可以在整个脚本头部或者函数的上方,包含“use strict”来启用严格模式(ie10以上支持严格模式)

3.2 关键字和保留字

3.3 变量

1.ECMAScript的变量是松散型的。即每个变量仅仅是一个用于保存值的占位符而已。

不存在定义某个变量就必须保存该种数据类型的值的规则,  “js”的变量相对于其他语言的变量,更加“放荡”(不“始终如一”)。

2.未经初始化的变量,会保存一个特殊值-----undefined。

3.使用未声明(定义)的变量会报referenceError defined。

3.4 数据类型

1.typeof ①结果:undefined,number,string,boolean,obeject(object和null的值,null是一个空的对象引用);function

② 两种用法:typeof 1 ; typeof(1)

2.undefined (已经定义,未被初始化的值)

defined(未被定义的)

3.null 空引用

null和undefined 相等(==) 不全等(===)

4.boolean 空字符串,0和NaN,null,undefined ==》false

5.number①用于保存浮点数值需要的内存空间是保存整数值的2倍。

②可以用科学计数法(e)表示浮点数 3e2 = 3*10的2次方 = 3*100

③浮点数的最高精度是17位数。

④浮点数计算会产生舍入误差问题。(基于IEE754数值的浮点计算的通病)

0.1+0.2 = 0.30000000000000004

⑤isFinite(num) 确定num是不是无穷

⑥NaN 不与任何值相等,包括NaN本身 isNaN 判断是否可以转化成数值

isNaN(NaN)true NaN是特殊的数值类型

isNaN(“blue”) false

isNaN(“11”) false

⑦Number() “”,null ,false =》 0

undefined=》NaN

忽略前导0,无法解析八进制

⑧paseInt() “”,null ,undefined =》 NaN

忽略前导0,无法解析八进制 所以加入第二个参数: paseInt("0x16",16) 基数16不带引号

遇到无法转换的字符串时即停止。

⑨ paseFloat() 解析时第一个小数点有效,第二个小数点无效。

忽略前导0,只解析10进制数;16进制的字符串会被转化成0

paseFloat("1234Blue") // 1234

paseFloat("0xA") // 0

paseFloat("1.9.8") // 1.9

    6.string()修改字符串 : 要改变某个字符串的值就要,”销毁“原来的字符串。“填充”新的字符串。

这个过程是后台进行的。所以在某些旧版本的浏览器中,拼接字符串速度很慢。

①toString() 转化成字符串 ,null和undefined没有这个方法

toString(num) 可以输出任何有效num制式表示的字符串值

②转型函数String();

7.object

3.5 操作符

     1.一元 ①前置递增/递减 (1) 例如:--a; 先递减1再参与运算

var a = 2;
var b = --a + 2;
alert(a) //1
alert(b) //3

        ②后置递增/递减(1)

var a = 2;
var b = a-- + 2;
alert(a) //1
alert(b) //4

   2.位操作符 ①负数的二进制码,使用的是二进制补码

求二进制补码:a,求这个值绝对值的二进制码 b,二进制反码(0->1,1->0)c.二进制码+1 口诀:正,反,+1

①ECMAScript 所有数值都是以64位的格式保存,但是位操作符不直接操作64位的值。而是先把64的值转化成32位,操作32位,最后再把结果转化成64位。

② 按位非 ~ 本质:-操作数-1

var n = 25;
var n1 = ~n;
alert(n1); //26 //-25-1

③按位与 & (10进制 -》 2进制 16 8 4 2 1)

④按位或 | ⑤按位异或 与 | 的不同,1&1= 0;

⑥(有符号)左移 <<,不会影响符号

⑦(有符号)右移 >>,不会影响符号

⑦(无符号)右移 > >>,影响符号(注意负数的是补码)

3.布尔操作符   ① 逻辑非 ! ②逻辑与 && 短路与(a,一假则假 b,第一个为假以后就不会判断第二个操作数)

              

var n = false;
alert(n && bbbbb); //bbbbb是没有定义的变量。正常情况下是会提示refrenceError defined的

③逻辑或 || 短路操作符 第一个为真以后就不会判断第二个操作数

var n = true;
alert(n || bbbbb); //bbbbb是没有定义的变量。正常情况下是会提示refrenceError defined的

   4.乘性操作符 (* / %)

5.加性操作符  ①+ 如果一个操作数是字符串,则把另一个也转换成字符串

②0 - 0 = 0 ; 0- (-0) = 0;-0-(-0) = 0;

6.关系操作符 ①> < <= >=   ②如果一个操作数是数值,则把另一个操作数也转换成数值 ;

③如果2个操作数都是字符串,则比较2个字符串的字符编码(大写字母的字符编码小于小写字母的字符编码)

 var tre = “A” < "a";   //true
 console.log("23" <  "3");  //true  (此处都是字符串)

7.相等操作符  ①== 比较的是值  (先转换再比较)②===  比较的是类型(只比较不转换)

特殊情况:null == undefined; (记住即可)
         8.条件操作符(?:) ①

var a = 1> 2?1:2;   //a = 2

9.赋值操作符  =    +=   *=  -=  /= %=

10.逗号操作符  ①用于执行多个操作(eg:声明多个变量)

 3.6 语句

   1.if  ①始终使用{}  ②始终使用代码块分行

2.do-while(后测试循环)

3.while(前测试循环)

4.for  ①在循环内部定义的i ,在外部仍然可以访问它。

②for(;;) 无限循环

5.for in  ① 可以枚举对象属性

②ECMAScript   对象的属性没有顺序。所以通过for-in循环输出的属性名的顺序是不可预测的。

③ 如果迭代对象 的值是null或者undefined,则不执行循环

④for(var x in arr)

6.label语句

7.break和continue   ①break会立即退出循环,强制执行循环后面的语句

           var num = 0;
      for (var i = 0; i < 10; i++) {
          if(i % 5 == 0){
            break;
          }
          num ++;
      }
      alert(num) //num = 4;i = 5

②continue 会立即退出循环,从循环顶部继续执行。

           var num = 0;
      for (var i = 0; i < 10; i++) {
          if(i % 5 == 0){
            continue;
          }
          num ++;
      }
      alert(num) //num = 8;i = 9

③与label语句的结合使用。

8.width 语句 ①为了简化多次编写同一个对象的工作。

           width(location){

           var url = href;

   }

9.switch操作符使用的是全等操作符

3.7 函数

1. ECMAScript中的函数,参数用数组表示。函数接触的始终是这个数组,而不关心数组中包含哪些参数。所以即使定义的函数接受3个参数,单在使用时不一定要传3个参数,可以少传、多传和不传。

在函数体内部,通过arguments对象访问参数数组。

2.arguments.length  可以得知有多少个参数传输给函数

3.function fun1(num1,num2){}

num1和arguments[0]的值会同步,但是它们的内存空间是独立的。

4.重载:在其它语言(如java)中可以为一个函数编写2个定义,只要这2个函数定义的签名(接受的参数的类型和数量)不一样即可。

ECMAScript中,参数是用数组表示的,因此对于函数来说参数的类型和数量都一样,所以没有签名,没有真正的重载。

时间: 2024-12-28 20:31:25

JavaScript高级程序设计(第3版) 第三章 (基本概念)的相关文章

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

第3章 基本概念 3.4 数据类型 5种简单数据类型:undefined.boolean.number.null.string. typeof操作符,能返回下列某个字符串:“undefined”.“boolean”.“number”.“string”.“object”.“function” typeof null = "object" 对未初始化和未声明的变量执行typeof操作都返回“undefined”,如下所示 var message; //未初始化 //var age; //未

JS高级程序设计学习笔记之第三章基本概念(语法,数据类型,流控制语句,函数)——查漏补缺

一.语法: 区分大小写 2.标识符:就是指变量.函数.属性的名字,或者函数的参数 a.标志符的规则:①第一个字符必须是一个字母.下划线(_)或一个美元符号($).                   ②其他字符可以是字母,下划线,美元符号或者数字. b.标志符采用驼峰大小写格式. c.严格模式:在顶部添加以下代码:"use strict"; d.语句:结尾加入分号.在控制语句中使用代码块为最佳实践. 二.关键字与保留字 三.变量:ECMAScript的变量是松散类型,可以保存任何类型的

JavaScript高级程序设计(第3版) 中文pdf扫描版 89M 高清下载

<JavaScript高级程序设计(第3版)>是JavaScript超级畅销书的最新版.ECMAScript5和HTML5在标准之争中双双胜出,使大量专有实现和客户端扩展正式进入规范,同时也为JavaScript增添了很多适应未来发展的新特性. <JavaScript高级程序设计>这一版除增加5章全新内容外,其他章节也有较大幅度的增补和修订,新内容篇幅约占三分之一. 全书从JavaScript语言实现的各个组成部分——语言核心.DOM.BOM.事件模型讲起,深入浅出地探讨了面向对象

《Javascript高级程序设计》阅读记录(三):第五章 上

这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 这个系列,我会把阅读<Javascript高级程序设计>之后,感觉讲的比较深入,而且实际使用价值较大的内容记录下来,并且注释上我的一些想法.做这个一方面是提升了我的阅读效果以及方便我以后阅读 另一个目的是,Javascript高级程序设计这本书内容很多也很厚,希望其他没有时间的人可以通过看这系列摘录,就可以大体学到书里面的核

《JavaScript高级程序设计》(第二版)

这本书的作者是 Nicholas C.Zakas ,博客地址是 http://www.nczonline.net/ ,大家可以去多关注,雅虎的前端工程师,是YUI的代码贡献者,可想而知这本书得含金量,他出的书都广受好评.这本书已经出了第二版,而且与第一版相比内 容更新很大,直接第二版就行.不要被书名的“高级”唬住,只要有JS基础语法知识和DOM基础知识就行,而且本书开始阶段还是介绍JS和DOM的语法知 识. 评论:重点推荐一下第五章(类型),第六章(OOP),第七章(匿名),多看几遍,至少要完全

《Javascript高级程序设计第3版》精华总结

一.JavaScript简介 1.1 javascript简史 1.2 javascript实现 + javascript是一种专为网页交互而设计的一种脚本语言,javascript由三大部分组成: ECMAScript,提供核心语言功能: DOM,提供访问和操作网页页面的方法和接口: BOM,提供与浏览器交互的方法和接口. 1.3 javascript的版本 二.在HTML中使用JavaScript 2.1 <script>元素 + 使用<script>元素向html页面中插入j

《JavaScript高级程序设计(第3版)》.Nicholas.C.Zakas.扫描版.pdf

下载地址:网盘下载 内容简介 编辑 本书从最早期Netscape浏览器中的JavaScript开始讲起,直到当前它对XML和Web服务的具体支持,内容主要涉及JavaScript的语言特点.JavaScript与浏览器的交互.更高级的JavaScript技巧,以及与在Web应用程序中部署JavaScript解决方案有关的问题,如错误处理.调试.安全性.优化/混淆化.XML和Web服务,最后介绍应用所有这些知识来创建动态用户界面. 本书适合有一定编程经验的开发人员阅读,也可作为高校相关专业课程的教

js面向对象及原型(javaScript高级程序设计第3版)

一.创建对象 创建一个对象,然后给这个对象新建属性和方法. var box = new Object(); //创建一个Object对象 box.name = 'Lee'; //创建一个name属性并赋值 box.age = 100; //创建一个age属性并赋值 box.run = function () { //创建一个run()方法并返回值 return this.name + this.age + '运行中...'; }; alert(box.run()); //输出属性和方法的值 上面

《javascript高级程序设计(第二版)》学习(3)

学习了第四章和第五章的内容 垃圾收集 JavaScript具有自动垃圾收集机制,局部变量只在函数执行的过程中存在,在此过程中,会为局部变量在栈(或堆)内存上分配相应空间,以便存储他们的值.当函数执行结束后,局部变量就没有存在的必要了,因此就可以释放他们的内存以供将来使用.垃圾收集的策略目前主要有两种: 标记清除:JavaScript中最常用的.垃圾收集器在运行的时候会给存储在内存中的所有变量都加上标记,然后,它会去除掉环境中的变量和被环境中其他变量所引用的变量标记.在此之后再被加上标记的变量将被

[已读]JavaScript高级程序设计(第3版)

从去年开始看,因为太长,总是没有办法一口气把它看完,再加上它与第二版大部分一致,读起来兴致会更缺一点. 与第二版相比,它最大的改变就是增加了很多html5的内容,譬如:Object对象的一些新东西,数据属性.访问器属性及相应的一些方法;比如它对跨域常见方法的比较和总结:postMessage,IE8的XDR,升级的XHR,jsonp跨域原理,单向的图片ping;又比如对数据推送的一些介绍,长轮询和http流是什么样子,单向的SSE和双向的Web Socket的详细介绍和比较. PS,关于SSE,