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、如果定义了两个名字相同的函数,则该名字只属于后者定义的函数。
JavaScript高级程序设计中第2、3章中细节知识点的更多相关文章
- JavaScript高级程序设计:第十二章
DOM1级主要定义的是HTML和XML文档的底层结构.DOM2和DOM3级则在这个结构的基础上引入了更多的交互能力,也支持了更高级的XML特性.为此DOM2和DOM3级分为许多模块,这些模块如下: D ...
- JavaScript高级程序设计学习笔记第六章--面向对象程序设计
1.ECMAScript没有类的概念,ECMA-262 把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.”,有点类似于散列表 2.ECMAScript 中有两种属性:数据属性和访问 ...
- JavaScript高级程序设计学习笔记第四章--变量、作用域和内存问题
1.变量可能包含两种不同数据类型的值:基本类型值和引用类型值. 基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象. 2.变量复制 如果从一个变量向另一个变量复制基本类型的值,会在 ...
- Javascript高级程序设计读书笔记(第二章)
第二章 在HTML中使用Javascript 2.1<script>元素 延迟脚本(defer = "defer")表明脚本在执行时不会影响页面的构造,脚本会被延迟到 ...
- JavaScript高级程序设计:第十四章
第十四章 一.表单的基础知识 在HTML中,表单是由<form>元素来表示的,而在javascript中,表单对应的则是HTMLFormElement类型.HTMLFormElement继 ...
- JavaScript高级程序设计学习笔记第三章--基本概念
一.标识符: 1.区分大小写 2.命名规则: 第一个字符必须是一个字母.下划线(_)或一个美元符号($) 其他字符可以是字母.下划线.美元符号或数字 标识符中的字母也可以包含扩展的 ASCII 或 U ...
- 《JavaScript高级程序设计》笔记:在HTML中使用Javascript(二)
script元素 向html页面中插入js的主要方法就是使用<script>元素.使用<script>元素的方式有两种:直接在页面中嵌入js代码和包含外部js文件.直接在页面中 ...
- 《javascript 高级程序设计》 笔记2 8~章
chapter 8 BOM(浏览器对象模型) window对象 表示浏览器的一个实例. 直接在window对象上定义的属性可以通过delete操作符删除,而全局变量不可以. 窗口关系及框架 位置操作 ...
- JavaScript高级程序设计学习笔记第十三章--事件
事件冒泡: IE 的事件流,事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档).例如: <!DOCTYPE html> <htm ...
- JavaScript高级程序设计学习笔记第五章--引用类型(函数部分)
四.Function类型: 1.函数定义的方法: 函数声明:function sum (num1, num2) {return num1 + num2;} 函数表达式:var sum = functi ...
随机推荐
- IDEA Maven Hadoop调试hdfs程序
IDEA 远程调试 Hadoop 两大特色:一是采用maven的pom配置:二是直接连接hdfs:9000端口,无须另外在服务端配置参数. 其实内容包含了两种方式:本地与远程调试.这里仅仅只是使用远程 ...
- word-wrap与word-break为长单词换行
如果你遇到长串英文单词或者url换行的问题,这时候就需要用到word-wrap与word-break这2个css属性啦. word-wrap:break-word;长单词与url地址自动换行. wor ...
- 在虚拟机里安装windows或Linux系统时,安装窗口过大按钮有时点不到解决办法(图文详解)
不多说,直接上干货! 问题详情 解决办法 很简单快捷的解决办法,就是快捷键ALT+F7,可以拖动窗口的位置. 成功!
- Java_静态变量
class c1c { private static int num = 0; private static double pi = 3.14; private double radius; priv ...
- AJPFX:实现递归统计文件夹的总大小
class Statistical { public static void main(String[] args) { Scanner sc = new Scanner(Syst ...
- Android iconfont字体图标的使用
1.首先,进入阿里的矢量图标库,在这个图标库里面可以找到很多图片资源,当然了需要登录才能下载或者使用,用GitHub账号或者新浪微博账号登录都可以 2.登录以后,可以搜索自己需要的资源,然后直接下载使 ...
- Ubuntu 创建docker 容器 系列一
docker 官网安装地址:https://docs.docker.com/install/linux/docker-ce/ubuntu/ 1.Ubuntu的版本要在12.04 LTS 以上,使用un ...
- checking for gcc... no
./configure 后显示checking for gcc... nochecking for cc... nochecking for cl.exe... noconfigure.sh:erro ...
- RFS自动化测试(一)
RFS 即 Robot Framework + Selenium RFS 的安装 1. python https://www.python.org/ RF框架是基于python的,所以要先安装有pyt ...
- VBA 从sql存储过程-记录集-导入
cnn.Open cnnstr cmd.ActiveConnection = cnn cmd.CommandTimeout = 120 cmd.CommandText = "dbo.t_bi ...