JavaScript高级程序设计中第2、3章中细节知识点

第2章

1、<script src=‘script.js‘ type=‘text/javascript‘></script>中,只要不包含defer和async属性,浏览器都会按照<script>元素在页面的出现顺序对它们依次进行解析。

2、defer属性     <script>中的defer属性的用途是表明脚本在执行时不会影响页面的构造,即,脚本会被延迟到整个页面都解析完毕后在运行。所以设置了defer属性就是相当于告诉浏览器立即下载但延迟执行。

defer=“defer”;

3、async属性   <script type="text/javascript" async src="script.js"></script>指定async属性的目的是不让页面等待脚本下载和执行,从而异步加载页面其他内容。为此,建议异步脚本不要在加载期间修改DOM。

4、嵌入外部script的好处:a、可维护性;b、可缓存,如果有两个页面都使用同一个文件,那么这个文件只需要下载一次,所以,最终结果就是能够加快页面加载的速度;c、适应未来。

第3章

1、在脚本中添加"use strict";  启用严格模式;

2、数据类型:5中简单数据类型(也称为基本数据类型):Undefined Null Boolean Number String。1中复杂数据类型---Object。

3、typeof操作符---“object”——如果这个值是对象或者null;“function”——如果这个值是函数。typeof是一个操作符而不是一个函数。

4、undefined  对于未声明的变量只能执行一项操作,即使用typeof操作符检测其数据类型。

var message;

//未声明
//var age;
alert(message);                //undefined
alert(age);                        //产生错误 

alert(typeof message);      //undefined
alert(typeof age);              //undefined

5、Null    null表示一个空对象指针,所以使用typeof操作符检测null值时会返回‘object’。实际上,undefined是派生自null值的,所以alert(undefined == null);  //true;

只要意在保存对象的变量还没有真正保存对象,就应该明确的让该变量保存null值。

6、Boolean  要将一个值转换为其对应的Boolean值,可以调用转型函数Boolean();

7、Number   八进制字面值的第一位必须是零(0),八进制数字序列(0—7)。如果字面值中的数值超出了范围,那么前导零将被忽略,后面的数值将被当作十进制数值解析。

var num1 = 070;   //八进制的56;
var num2 = 79;     //无效的八进制数值----解析为79;

十六进制字面值前两位必须是0x;

进行算术计算时,所有的八进制和十六进制表示的数值最终都将被转换成十进制数值。

浮点数值的最高精度是17为小数。

8、NaN    即非数值  是一个特殊的数值。首先, 0除以0返回NaN,正数除以0返回Infinity,负数除以0得-Infinity;其次,NaN与任何值都不相等,包括本身。

9、String类型  字符串特点:字符串是不可变的,也就是,字符串一旦创建,它们的值就不能改变。要改变某个变量保存的字符串,首次要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量。

var lang = "Java";
lang  = lang + "Script";

操作过程如下:首先创建一个能容纳10个字符的新字符串,然后在这个字符串中填充“Java”和“Script”,最后异步是销毁原来的字符串“Java”和字符串“Script”;

关于toString()和String():toString()数值、布尔值、对象和字符串值都有这个方法;但是undefined和null没有这个方法。多数情况下,调用toString()方法不必传递参数

var num = 10;
num.toString(2);   //"1010";
num.toString(8);   //"12";
num.toString(16);  //"a";

不知道要转换的值是不是null和undefined的情况下,可以使用String():1、如果值有toString()方法,则调用该方法并返回相应的结果;2、如果是null返回”null”,undefined返回“undefined”

10、布尔操作符

逻辑与&&:逻辑与操作属于短路操作,即如果第一个操作数能够决定结果,那么不会再对第二个操作数求值

逻辑或||:如果第一个操作数的求值结果为true,就不会对第二个操作数求值了。

11、相等和不相等(==  ===  !=  !==):如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false转换为0,true转换为1;

如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值。

12、理解参数(arguments):(1)即便定义的函数只能接收两个参数,在调用这个函数时也未必一定要传递两个参数,可以传递一个、两个、三个甚至不传递参数,原因是参数在函数内部是用一个数组来表示。实际上,在函数体可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。其实,arguments对象只是与数组类似,可以使用方括号语法访问它的每一个元素;(2)arguments对象可以与命名参数一起使用

function doAdd(num1,num2){
   if(arguments.length == 1){
       alert(num1 + 10);
}  else if(arguments.length == 2){

    alert(arguments[0] + num2);
}

}

(3)arguments的值永远与对应命名参数的值保持同步

function doAdd(num1,num2){
   arguments[1] = 10;
alert(arguments[0] + num2);

}这并不是说读取这两个值会访问相同的内存空间,arguments[1] 和 num2 的内存空间的独立的,但是它们的值是同步的。如果值传入一个参数,那么arguments[1]设置的值不会反应到命名参数中。没有传递值的命名参数将自动被赋予undefined值。

13、如果定义了两个名字相同的函数,则该名字只属于后者定义的函数。

时间: 2024-10-10 08:04:51

JavaScript高级程序设计中第2、3章中细节知识点的相关文章

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

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

javascript高级程序设计 学习笔记 第五章 上

第五章 引用类型的值(对象)是引用类型的一个实例.在 ECMAScript 中,引用类型是一种数据结构, 用于将数据和功能组织在一起.它也常被称为类,但这种称呼并不妥当.尽管 ECMAScript 从技术上讲是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和接口等基本结构.引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法. 对象是某个特定引用类型的实例.新对象是使用 new 操作符后跟一个构造函数来创建的. 构造函数本身就是一个函数,只不过该函数是出于创建新

【javascript高级程序设计笔记】第六章OOP

忙了一段时间,加了将近一个月的班. 书也落下没看,上次看到第七章(这部分笔记大概还是9月份的吧),偶尔看到很吃力.看的速度慢下来. 学习就是一个慢慢积累慢慢沉淀的过程.看书时没有明显觉得提升.但在看完书后近段时间工作中写代码,明显感觉效率还是有提升,基础知识牢固了. 这本书是第二次看,这次很认真的遍读和做笔记,笔记的文字均是自己边看边敲的,这样才更好的真正的吸收到一部分吧! 这些天在看web响应式设计:HTML5和CSS3实战 第6章 面向对像的程序设计 6.1.1属性类型 ECMAScript

JavaScript高级程序设计(2)在HTML中使用JavaScript

本章内容:使用<script>元素.嵌入脚本与外部脚本.文档模式对JavaScript的影响.考虑禁用JavaScript的场景. 1.<script>元素 向HTML页面中插入JavaScript的主要方法,就是使用<script>元素.HTML4.01为<script>定义了下列属性: async:可选.表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本.只对外部脚本文件有效. charset:可选.表示应该通过src属

JavaScript高级程序设计:第十二章

DOM1级主要定义的是HTML和XML文档的底层结构.DOM2和DOM3级则在这个结构的基础上引入了更多的交互能力,也支持了更高级的XML特性.为此DOM2和DOM3级分为许多模块,这些模块如下: DOM2级核心: DOM2级视图: DOM2级事件: DOM2级样式: DOM2级遍历和范围: DOM2级HTML. 一.DOM变化 DOM2级和3级的目的在于扩展DOM API,以满足操作XML的所有需求,同时提供更好的错误处理及特性检测能力. 1.针对XML命名空间的变化 有了XML命名空间,不同

JavaScript高级程序设计学习笔记第六章--面向对象程序设计

1.ECMAScript没有类的概念,ECMA-262 把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.”,有点类似于散列表 2.ECMAScript 中有两种属性:数据属性和访问器属性. 数据属性: [[Configurable]]:表示能否通过 delete 删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性. [[Enumerable]]:表示能否通过 for-in 循环返回属性. [[Writable]]:表示能否修改属性的值. [[Valu

JavaScript高级程序设计学习笔记第四章--变量、作用域和内存问题

1.变量可能包含两种不同数据类型的值:基本类型值和引用类型值. 基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象. 2.变量复制 如果从一个变量向另一个变量复制基本类型的值,会在变量对象上创建一个新值,然后把该值复制到为新变量分配的位置上,两个变量可以参与任何操作而不会相互影响. 当从一个变量向另一个变量复制引用类型的值时,同样也会将存储在变量对象中的值复制一份放到为新变量分配的空间中.不同的是,这个值的副本实际上是一个指针,而这个指针指向存储在堆中的一个对象.复制操作结束

javascript高级程序设计笔记(第6章 面向对象的程序设计)

1.访问器属性: var book = { _year: 2004, edition: 1 }; Object.defineProperty(book, "year", { get: function(){ return this._year; }, set: function(newValue){ if (newValue > 2004) { this._year = newValue; this.edition += newValue - 2004; } } }); book

javascript高级程序设计笔记(第5章 引用类型)

1.Object类型 两种方式定义:对象字面量.new 两种方式访问:括号.点 2.Array类型 2.1  定义方式:new Array.数组字面量 2.2  lenght属性:可以利用它方便的想数组末尾添加元素 2.3  检测数组 instanceof isArray()方法  2.4  toString().soLocaleString().valueOf().join()方法 2.5.栈方法   push()方法:逐个添加到数组末尾,并返回修改后的数组长度 pop()方法:返回数组的最后

JavaScript高级程序设计:第十四章

第十四章 一.表单的基础知识 在HTML中,表单是由<form>元素来表示的,而在javascript中,表单对应的则是HTMLFormElement类型.HTMLFormElement继承了HTMLElement,因而与其他HTML元素具有相同的默认属性.不过,HTMLFormElement也有它自己下列独有的属性和方法. 取得<form>元素的引用方式有好几种.其中最常见的方式就是将它看成与其他元素一样,并为其添加id特性,然后再像下面这样使用getElementById()方